ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:69.09KB ,
资源ID:15705925      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15705925.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OpenCV的基础光学字符识别Basic OCR in OpenCVWord文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OpenCV的基础光学字符识别Basic OCR in OpenCVWord文档格式.docx

1、在这个模块我们转换我们处理后的图像为一个特征向量以便于分类,它可能是像素矩阵转换成向量或者获取轮廓编码链的数据表示。分类模块获取特征向量,并训练我们的系统或者说使用一个分类方法(比如knn)把输入的特征向量分类。这个基础光学字符识别的流程图如下:现在我们有由图片组成的一个训练集和一个测试集来训练和测试我们的分类器(knn)。我们有1000张手写数字的图片,每个数字100张。我们使用每个数字的50张图片来训练,另外50张来测试我们的系统。接下来我们要做的第一个工作就是对所有训练集的图片预处理,为了完成它我们创建一个预处理函数。在这个函数中,我们输入一张图片和我们想要它在处理后得到的新的长和宽,这

2、个函数讲返回一个标准大小的带有边框的图片。你可以看到更多清楚的处理流程:预处理代码:void findX(IplImage* imgSrc,int* min, int* max)inti;intminFound=0;CvMat data;CvScalarmaxVal=cvRealScalar(imgSrc-width * 255);CvScalarval=cvRealScalar(0);/For each col sum, if sum width*255 then we find the min/then continue to end to search the max, if sum w

3、idth*255 then is new maxfor (i=0; iwidth; i+)cvGetCol(imgSrc, &data, i);val= cvSum(&data);if(val.val0 bb.height)?bb.width:bb.height;result=cvCreateImage( cvSize( size, size ), 8, 1 );cvSet(result,CV_RGB(255,255,255),NULL);/Copy de data in center of imageint x=(int)floor(float)(size-bb.width)/2.0f);i

4、nt y=(int)floor(float)(size-bb.height)/2.0f);cvGetSubRect(result, &dataA, cvRect(x,y,bb.width, bb.height);cvCopy(&data, &dataA, NULL);/Scale resultscaledResult=cvCreateImage( cvSize( new_width, new_height ), 8, 1 );cvResize(result, scaledResult, CV_INTER_NN);/Return processed datareturn *scaledResul

5、t;我们使用basicOCR类的getData函数来创建训练数据和训练类,这个函数获取所有在OCR文件夹下的图片来创建训练数据,OCR文件夹中的每个类是一个文件夹,其中每个文件都是名为cnn.pbm的pbm文件,c是类(0,1,.,9)中的一个,nn是图片的编号(00,01,.,99)。我们得到的每张图片都是预处理过的了,然后他们将转换成特征向量里的数据以便我们使用。basicOCR.cpp 获取数据代码:void basicOCR:getData()IplImage* src_image;IplImageprs_image;CvMatrow,data;char file255;inti,j;

6、for(i =0;classes;for( j = 0; jtrain_samples; j+)/Load fileif(j10)sprintf(file,%s%d/%d0%d.pbm,file_path, i, i , j);else%s%d/%d%d.pbmsrc_image = cvLoadImage(file,0);src_image)printf(Error: Cant load image %sn, file);/exit(-1);/process fileprs_image = preprocessing(src_image, size, size);/Set class lab

7、elcvGetRow(trainClasses, &row, i*train_samples + j);cvSet(&row, cvRealScalar(i);/Set datacvGetRow(trainData, &IplImage* img = cvCreateImage( cvSize( size, size ), IPL_DEPTH_32F, 1 );/convert 8 bits image to 32 float imagecvConvertScale(&prs_image, img, 0.0039215, 0);cvGetSubRect(img, &data, cvRect(0

8、,0, size,size);CvMatrow_header, *row1;/convert data matrix sizexsize to vecorrow1 = cvReshape( &row_header, 0, 1 );cvCopy(row1, &row, NULL);在处理并且得到训练数据和类以后我们用我们的模型训练这些数据,在这个例子中我们用knn方法:knn=new CvKNearest( trainData, trainClasses, 0, false, K );现在我们可以测试我们的模型了,并且我们可以使用测试的结果来和其它我们使用的方法比较,又或者我们减小图片大小等等。这里是在我们的basicOCR类里创建的一个函数,测试函数。这个函数获取其它500个样本并且用我们选择的方法分类,再检验得到的结果。test()int error=0;inttestCount=0;for( j = 50; 50+train_samples;Err

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1