java opencv 数字识别算法_[机器学习]基于OpenCV实现最简单的数字识别

本文将基于OpenCV实现简单的数字识别。这里以游戏Angry

Birds为例,通过以下几个主要步骤对其中右上角的分数部分进行自动识别。

a4c26d1e5885305701be709a3d33442f.png

1. 学习分类器

根据训练样本,选取模型训练产生数字分类器。这里的样本可以是通用的数字样本库(如NIST等),也可以是针对应用场景而制作的专门训练样本。前者优在泛化性,后者强在准确率,当然常用做法是将这两者结合,即在通用数字库基础上做修改。另外这里由于模式并不复杂,计算量也不大,所以不对样本进行特征提取,对原始样本作简单变换后直接作为训练样本。

具体地,首先是生成训练样本矩阵,一般样本是以二维矩阵的方式存在文件当中,现在要将它们读出来,进行适当的预处理,然后生成OpenCV能理解的数据结构。

train_X = cvCreateMat(sample_num * class_num, size * size, CV_32FC1);

train_Y = cvCreateMat(sample_num * class_num, 1, CV_32FC1);

for(i = 0; i 

for(j = 0; j 

src_image = cvLoadImage(file,0);

pimage = preprocessing(src_image, size, size);

...

cvGetRow(train_X, 

你可能感兴趣的:(java,opencv,数字识别算法)