OCR con riconoscimento delle cifre semplice in OpenCV-Python

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

Sto cercando di implementare un "Digit Recognition OCR" in OpenCV-Python (cv2). È solo per scopi di apprendimento. Vorrei imparare sia le funzionalità KNearest che SVM in OpenCV.

Ho 100 campioni (cioè immagini) di ogni cifra. Mi piacerebbe allenarmi con loro.

C'è un esempio letter_recog.py che viene fornito con un campione OpenCV. Ma non riuscivo ancora a capire come usarlo. Non capisco quali sono i campioni, le risposte ecc. Inoltre, all'inizio carica un file txt, che prima non ho capito.

Più tardi, cercando un po', ho trovato un letter_recognition.data in campioni cpp. L'ho usato e ho creato un codice per cv2.KNearest nel modello di letter_recog.py (solo per il test):

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

Mi ha dato un array di dimensioni 20000, non capisco cosa sia.

Domande:

1) Che cos'è il file letter_recognition.data? Come costruire quel file dal mio set di dati?

2) Cosa indica results.reval()?

3) Come possiamo scrivere un semplice strumento di riconoscimento delle cifre utilizzando il file letter_recognition.data (KNearest o SVM)?