Einfache Ziffernerkennung OCR in OpenCV-Python

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

Ich versuche, eine "Digit Recognition OCR" in OpenCV-Python (cv2) zu implementieren. Es dient nur zu Lernzwecken. Ich möchte sowohl die KNearest- als auch die SVM-Funktionen in OpenCV lernen.

Ich habe 100 Proben (dh Bilder) von jeder Ziffer. Ich würde gerne mit ihnen trainieren.

Es gibt ein Beispiel letter_recog.py, das mit dem OpenCV-Beispiel geliefert wird. Aber ich konnte immer noch nicht herausfinden, wie man es benutzt. Ich verstehe nicht, was die Beispiele, Antworten usw. sind. Außerdem lädt es zuerst eine txt-Datei, die ich zuerst nicht verstand.

Später, als ich ein wenig suchte, konnte ich eine letter_recognition.data in den cpp-Beispielen finden, die ich benutzte und einen Code für cv2.KNearest im Modell von letter_recog.py erstellte (nur zum Testen):

importiere numpy als np import cv2 fn = "letter-recognition.data" a = np.loadtxt(fn, np.float32, delimiter=",", converters={ 0 : lambda ch : ord(ch)- ord("A") }) Samples, Antworten = a[:,1:], a[:,0] model = cv2.KNearest() retval = model.train(samples,responses) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel() 

Es hat mir ein Array der Größe 20000 gegeben, ich verstehe nicht, was es ist.

Fragen:

1) Was ist die Datei letter_recognition.data? Wie erstelle ich diese Datei aus meinem eigenen Datensatz?

2) Was bedeutet results.reval()?

3) Wie können wir mit Hilfe der Datei letter_recognition.data (entweder KNearest oder SVM) ein einfaches Ziffernerkennungstool schreiben?