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