孟维康 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 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形