
opencv附带一个字符识别示例. 它的重点不是OCR字符识别,而是主要演示机器学习的应用. 它使用UCI提供的字符数据(特征数据).
DAMILES在Internet上发布了使用OpenCV进行OCR的示例.
这些示例只能用于学习OpenCV或熟悉OCR的简单过程,因为它们与当前更的OCR引擎的识别率相差甚远.
这是OpenCV下OCR的过程:
1. 特征提取
2. 培训
3. 明

特征提取
1. 在图像预处理之后,提取与字符相关的ROI图像,并对尺寸进行归一化. 整个图像的像素值序列可以直接用作特征. Damiles将整个角像直接转换为矢量特征作为特征输入.
2. 但是ocr字符识别是什么,直接将整个图像用作特征数据的维数过高且计算量过多,因此也可以进行某种维数缩小以减少输入数据量. 获取角色的ROI图像并将其二值化. 将图像划分为块,然后计算每个小块中非零像素的数量,从而形成一个较小的矩阵,这是新功能.
这是UCI处理它的方式,请参考其描述+ Recognition + of + Handwriting + Digits
OpenCV中的letter_recog示例使用其特征数据.
培训和认可
训练和识别通常使用相同的机器学习方法:

DAMILES应用KNearest方法来训练和识别输入数据.
1. 数据输入:
在getData()函数中:
设置trainData和trainClasses的数据.
2. 初始化机器学习算法及其训练
knn = new CvKNearest(trainData,trainClasses,0,false,K);
trainData,已获取trainClasses数据.

K是类别数.
在CvKNearest算法的初始化中培训已经完成
3. 明
获取身份验证测试数据testData
result = knn-> find_nearest(testData,K,0,0,nearest,0);
结果是识别的结果.
在OpenCV自己的示例中,它提供了机器学习方法(例如boostocr字符识别是什么,mlp,knearest,nbayes,svm和rtree)进行训练和识别.

处理步骤和方法类似.
这些示例的识别率不是很高. 具有更好的使用意义,OCR识别率大于90%. 因此,OCR需要更多的功能和分析方法来提高识别率. Tesseract是一个很好的开源OCR引擎.
-------------------
在tesseract的原始字体库中,一种字体的字符样本库包括: 94个字符,8种大小,4种字体(普通,粗体,斜体,斜体粗体),每种都有20个样本,总共60160个样本.
与UIC提供的字体库不同,tesseract提供了对标准打印字体库的识别,而UIC提供了用于手写手写的特征数据.
数据之美提到,G公司(应该是Google)的研究结果表明,在自然语言和机器翻译领域,简单模型和大量有效样本数据比复杂模型更有效. 加上少量样本数据. . 该结论应适用于机器学习的许多领域. 计算速度足够快,样本也足够大,即使使用简单的模型,效果也可能出乎意料.
可以看出,收集有效的大型样本库非常重要.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-285947-1.html
到明年就11元多一斤也就是说今年存10元到明年10
015元刚好买辆车