我试图在OpenCV-Python (cv2)中实现“数字识别OCR”。这只是为了学习。我想学习OpenCV中KNearest和SVM的特性。

每个数字都有100个样本(即图像)。我想和他们一起训练。

OpenCV样本中有一个letter_recognition .py样本。但我仍然不知道如何使用它。我不明白是什么样本,反应等等。而且,它首先会加载一个txt文件,这是我一开始不理解的。

后来稍微找了一下,我找到了一个字母识别。CPP样本中的数据。我用它做了一个cv2的代码。在letter_recognize .py的模型中KNearest(仅用于测试):

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)什么是字母识别。数据文件吗?如何从我自己的数据集构建该文件?

2) results.reval()表示什么?

3)如何使用letter_recognition编写一个简单的数字识别工具。数据文件(KNearest或SVM)?