车牌识别的程序问题
最近做论文,做了一个车牌识别的简单程序,但运行异常,调试几天都没有结果,非常着急,请各位大侠帮帮我吧。我会真心感激您。出问题的代码如下:
//去除上下左边框
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循环内部后,出现异常