Proste rozpoznawanie cyfr OCR w OpenCV-Python

| | | | | | | | | | | | | | | |

Próbuję zaimplementować „Rozpoznawanie cyfr OCR” w OpenCV-Python (cv2). Służy tylko do nauki. Chciałbym poznać funkcje KNearest i SVM w OpenCV.

Mam 100 próbek (tj. obrazów) każdej cyfry. Chciałbym z nimi trenować.

Istnieje przykładowy letter_recog.py dołączony do próbki OpenCV. Ale nadal nie mogłem wymyślić, jak z niego korzystać. Nie rozumiem, jakie są próbki, odpowiedzi itp. Ponadto na początku ładuje plik txt, którego najpierw nie zrozumiałem.

Później trochę poszukując, mogłem znaleźć letter_recognition.data w próbkach cpp. Użyłem go i zrobiłem kod dla cv2.KNajbliższy w modelu letter_recog.py (tylko do testów):

import numpy as np import cv2 fn = "rozpoznawanie liter.data" a = np.loadtxt(fn, np.float32, delimiter=",", converters={ 0 : lambda ch : ord(ch)- ord("A") }) próbki, odpowiedzi = a[:,1:], a[:,0] model = cv2.KNearest() retval = model.train(samples,respons) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel() 

Dał mi tablicę o rozmiarze 20000, nie rozumiem, co to jest.

Pytania:

1) Co to jest plik letter_recognition.data? Jak zbudować ten plik z własnego zestawu danych?

2) Co oznacza results.reval()?

3) Jak możemy napisać proste narzędzie do rozpoznawania cyfr przy użyciu pliku letter_recognition.data (albo KNearest lub SVM)?