孟维康 2016-02-15 01:35 采纳率: 66.7%
浏览 2481
已结题

关于车牌识别的新人问题

本人新手,最近学习车牌识别,我把字符分割后想生成新的文件方便下一步实验,但是生成的roi是在循环里进行的,保存的文件名会被覆盖,不知道如何处理。望指教。

下面是我字符分割的代码

IplImage*img3=cvCreateImage(cvGetSize(img0), img0->depth,0);
IplImage*img4=cvCreateImage(cvGetSize(img0), IPL_DEPTH_8U,0);

cvThreshold( img2, img3, 210, 255, CV_THRESH_BINARY );//二值化
IplConvKernel * myModel2;
myModel2=cvCreateStructuringElementEx( 3,5,1,2,CV_SHAPE_RECT ); //自定义矩形模板
cvDilate(img3,img4,myModel2,1);//膨胀
CvMemStorage* storage1 = cvCreateMemStorage (0);
CvSeq* contour1 = 0;

FillInternalContours(img4,190); ////////////轮廓填充
cvFindContours (img4, storage1, &contour1, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);

double maxarea1=50;
int idx = 0;

char szName[56] = {0};

for (; contour1 != 0; contour1 = contour1->h_next)

{

double tmparea1=fabs(cvContourArea(contour1));

if(tmparea1 < maxarea1)

{

cvSeqRemove(contour1,0); //删除面积小于设定值的轮廓

continue;

}

   CvRect rect1 = cvBoundingRect( contour1, 0 );
   ////////////////////////切割
// cvRectangle( img2, cvPoint( rect1.x, rect1.y ),cvPoint( rect1.x + rect1.width, rect1.y + rect1.height ), cvScalar(0,255,0), 0 );
IplImage* imgNo = cvCreateImage(cvSize(rect1.width,rect1.height), IPL_DEPTH_8U, 1);   
 cvSetImageROI(img3, rect1);  
 cvCopyImage(img3, imgNo);  
 cvResetImageROI(img3);   
 sprintf(szName, "wnd_%d", idx++);  
 cvNamedWindow(szName,CV_WINDOW_AUTOSIZE);   
 cvShowImage(szName, imgNo); 
 cvReleaseImage(&imgNo);   

}

  • 写回答

2条回答 默认 最新

  • 91program 博客专家认证 2016-02-15 02:21
    关注

    你的文件名的生成规则是什么呢?
    分割后,会有多个文件,每个文件应该有一个独立的名称才对,这样对不会出现覆盖的现象。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题