Eenvoudige cijferherkenning OCR in OpenCV-Python

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

Ik probeer een "Cijferherkenning OCR" te implementeren in OpenCV-Python (cv2). Het is alleen voor leerdoeleinden. Ik wil graag de functies van KNearest en SVM in OpenCV leren.

Ik heb 100 voorbeelden (dwz afbeeldingen) van elk cijfer. Ik zou graag met hen willen trainen.

Er is een voorbeeld letter_recog.py dat bij het OpenCV-voorbeeld wordt geleverd. Maar ik kon er nog steeds niet achter komen hoe ik het moest gebruiken. Ik begrijp niet wat de voorbeelden, reacties enz. zijn. Ook laadt het eerst een txt-bestand, wat ik eerst niet begreep.

Later na een beetje zoeken, kon ik een letter_recognition.data vinden in cpp-voorbeelden. Ik gebruikte het en maakte een code voor cv2.KNearest in het model van letter_recog.py (alleen om te testen):

import numpy as np import cv2 fn = "letter-recognition.data" a = np.loadtxt(fn, np.float32, delimiter=",", converters={ 0: lambda ch: ord(ch)- ord("A") }) samples, responsen = 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() 

Het gaf me een array van grootte 20000, ik begrijp niet wat het is.

Vragen:

1) Wat is het bestand letter_recognition.data? Hoe bouw ik dat bestand uit mijn eigen dataset?

2) Wat betekent results.reval()?

3) Hoe kunnen we een eenvoudig hulpmiddel voor cijferherkenning schrijven met behulp van het bestand letter_recognition.data (KNearest of SVM)?