孟维康 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 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用