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?