OpenCV3.0 开始有了手写体数字识别的 例子,opencv提供了一张手写数字图片进行训练。
图片位置:/opencv/sources/samples/data/digits.png,
例子中使用 KNN最近邻算法进行 训练和分类,对于数字的识别率能达到 90% 以上,当然也是因为数字比较简单,不过作为入门级的OCR,想来应该是够了。
参考代码:
#include <iostream>
#include "opencv2\opencv.hpp"
using namespace std;
using namespace cv;
#pragma comment(lib,"opencv_core310.lib")
#pragma comment(lib,"opencv_highgui310.lib")
#pragma comment(lib,"opencv_imgproc310.lib")
#pragma comment(lib,"opencv_ml310.lib")
#define TRAIN_NUM 3000
int main()
{
Mat src = imread("digits.png");
Mat grayImage;
cvtColor(src, grayImage, CV_BGR2GRAY);
threshold(grayImage, grayImage, 48, 255, CV_THRESH_BINARY);
int m = grayImage.rows / 20; // 原图为2000*1000
int n = grayImage.cols / 20; // 裁剪为20*20的小块
Mat data,labels; // 特征矩阵
for(int