Я пытаюсь реализовать "распознавание цифр OCR" в OpenCV-Python (cv2). Это только для учебных целей. Я хотел бы изучить возможности KNearest и SVM в OpenCV.
У меня есть 100 образцов (то есть изображений) каждой цифры. Я хотел бы тренироваться с ними.
Существует пример letter_recog.py
который поставляется с образцом OpenCV. Но я все еще не мог понять, как его использовать. Я не понимаю, что это за образцы, ответы и т.д. Кроме того, сначала загружается текстовый файл, чего я сначала не понял.
Позже, немного поискав, я смог найти letter_recognition.data в образцах cpp. Я использовал его и сделал код для cv2.KNearest в модели letter_recog.py (только для тестирования):
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()
Это дало мне массив размером 20000, я не понимаю, что это такое.
Вопросы:
1) Что такое файл letter_recognition.data? Как создать этот файл из моего собственного набора данных?
2) Что обозначает results.reval()
?
3) Как мы можем написать простой инструмент распознавания цифр, используя файл letter_recognition.data (либо KNearest, либо SVM)?