CR de reconhecimento de dígitos simples no OpenCV-Python

Estou tentando implementar um "OCR de reconhecimento de dígitos" no OpenCV-Python (cv2). É apenas para fins de aprendizado. Gostaria de aprender os recursos do KNearest e SVM no OpenCV.

Tenho 100 amostras (ou seja, imagens) de cada dígito. Eu gostaria de treinar com ele

Há uma amostraletter_recog.py que vem com a amostra OpenCV. Mas ainda não consegui descobrir como usá-lo. Não entendo quais são as amostras, respostas etc. Além disso, ele carrega um arquivo txt primeiro, o que não entendi primeir

Depois de pesquisar um pouco, eu pude encontrar um letter_recognition.data nos exemplos do cpp. Eu o usei e fiz um código para cv2.KNearest no modelo de letter_recog.py (apenas para teste):

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, 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()

Ele me deu uma matriz de tamanho 20000, não entendo o que

Questões

1) O que é o arquivo letter_recognition.data? Como criar esse arquivo a partir do meu próprio conjunto de dados?

2) O que fazresults.reval() denotar?

3) Como podemos escrever uma ferramenta simples de reconhecimento de dígitos usando o arquivo letter_recognition.data (KNearest ou SVM

questionAnswers(6)

yourAnswerToTheQuestion