车牌识别的程序问题

andy918 2012-04-05 08:18:54
最近做论文,做了一个车牌识别的简单程序,但运行异常,调试几天都没有结果,非常着急,请各位大侠帮帮我吧。我会真心感激您。出问题的代码如下:
//去除上下左边框
int pixels=0,curpixels=0,yy1,yy2,xx1,xx2,flag=0;
yy1=0;
yy2=size.cy-1;
for(j=0;j<size.cx;j++)
{
if(*(dibNew2->m_pImgData+j)==255)
curpixels++;
}
pixels=curpixels;
for(i=1;i<size.cy/2;i++)
{
curpixels=0;
for(j=0;j<size.cx;j++)
{
if(*(dibNew2->m_pImgData+i*lineByte+j)==255)
curpixels++;
}
if(flag==0)
{
if(curpixels>pixels)
pixels=curpixels;
if(pixels-curpixels>0.5*pixels)
{
flag=1;
pixels=curpixels;
}
}
else
{
if(curpixels<pixels)
pixels=curpixels;
if(curpixels-pixels>0.5*curpixels)
{
yy1=i;
flag=0;
}
}
}
flag=0;
for(j=0;j<size.cx;j++)
{
if(*(dibNew2->m_pImgData+(size.cy-1)*lineByte+j)==255)
curpixels++;
}
pixels=curpixels;
for(i=size.cy-2;i>size.cy/2;i--)
{
curpixels=0;
for(j=0;j<size.cx;j++)
{
if(*(dibNew2->m_pImgData+i*lineByte+j)==255)
curpixels++;
}
if(flag==0)
{
if(curpixels>pixels)
pixels=curpixels;
if(pixels-curpixels>0.5*pixels)
{
flag=1;
pixels=curpixels;
}
}
else
{
if(curpixels<pixels)
pixels=curpixels;
if(curpixels-pixels>0.5*curpixels)
{
yy2=i;
flag=0;
}
}
}
flag=0;
for(i=yy1;i<yy2;i++)
{
if(*(dibNew2->m_pImgData+i*lineByte)==255)
curpixels++;
}
pixels=curpixels;
for(j=1;j<size.cx/10;j++)
{
curpixels=0;
for(i=yy1;i<yy2;i++)
{
if(*(dibNew2->m_pImgData+i*lineByte+j)==255)
curpixels++;
}
if(flag==0)
{
if(curpixels>pixels)
pixels=curpixels;
if(pixels-curpixels>0.5*pixels)
{
flag=0;
pixels=curpixels;
}
}
else
{
if(curpixels<pixels)
pixels=curpixels;
if(curpixels-pixels>0.5*curpixels)
{
xx1=j;
flag=0;
}
}
}
xx2=size.cx-1;

//建立一个新视图,显示去除边框结果
pFrame2->SendMessage(WM_COMMAND, ID_FILE_NEW);
CMyCarView* pView3=(CMyCarView*)pFrame2->MDIGetActive()->GetActiveView();
CMyCarDoc* pDocNew3=pView3->GetDocument();
ImageDib *dibNew3=pDocNew3->GetPDib();
pView3->OnInitialUpdate();
pDocNew3->SetModifiedFlag(TRUE);
pDocNew3->UpdateAllViews(pView3);

size.cx=xx2-xx1+1;
size.cy=yy2-yy1+1;

int lineByte1=(size.cx+3)/4*4;

unsigned char *pDib_imgdata1=new BYTE [size.cy*lineByte1];

for(i=0;i<size.cx;i++){
for(j=0;j<size.cy;j++){
*(pDib_imgdata1+j*lineByte1+i)=*(dibNew3->m_pImgData+(yy1+j)*lineByte1+i+xx1);
}
}

dibNew3->ReplaceDib(size,pDib->m_nBitCount,pDib->m_lpColorTable,pDib_imgdata1);
其中运行到最后的for循环内部后,出现异常
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy918 2012-04-07
  • 打赏
  • 举报
回复
谢谢大家了!问题还是没有解决,问题出在去除边框的算法上了,可是这个算法我是参考的,也没看太懂,所以不知哪里出了错误。上面的代码,已经把图片处理成了二值图像,就是去除边框时有些问题。有没有做过的朋友帮我指导一下,谢谢了
赵4老师 2012-04-05
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
pathuang68 2012-04-05
  • 打赏
  • 举报
回复
看看OpenCV吧。

如果完全自己搞的话,对于车牌识别这样的应用,你至少要将图片灰度化。
x363635334 2012-04-05
  • 打赏
  • 举报
回复
肯定是圆括号里的地址失算超出了,访问违规 你看看是不是指到矩阵外边了
yiyefangzhou24 2012-04-05
  • 打赏
  • 举报
回复
这个好像是图形图像处理吧?找找图像识别算法,具体的我也不会,要找专业人士

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧