Простое распознавание цифр OCR в OpenCV-Python

Я пытаюсь реализовать «Распознавание цифр» в 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)?

368
задан Ultraviolet 23 January 2018 в 22:16
поделиться