我正在尝试用OpenCV-Python (cv2)实现一个“数字识别光学字符识别”。它只是为了学习的目的。我想学习OpenCV中的KNearest和支持向量机的特性。
我有每个数字的100个样本(即图像)。我想和他们一起训练。
OpenCV sample附带了一个示例letter_recog.py
。但我仍然不知道如何使用它。我不明白什么是样本,响应等。而且,它一开始加载了一个txt文件,这是我一开始不理解的。
稍后搜索一下,我可以在cpp示例中找到letter_recognition.data。我使用了它,并在letter_recog.py的模型中为cv2.KNeest做了一个代码(只是为了测试):
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或支持向量机)编写一个简单的数字识别工具?
https://stackoverflow.com/questions/9413216
复制相似问题