cvCreateImage老是报内存读写错误
for(int i = 1; i <= ConfigureDlg.m_capcount; i++ )
{
CString buffer,temp1,temp2,filename;//读取源图像
int t = pDlg->count++;
buffer.Format ("image_%02d.bmp", t);
temp1 = pDlg->m_path.Left(2);
temp2 = pDlg->m_path.Right(5);
filename = temp1 + "\\\\" + temp2 + "\\\\" + buffer;
IplImage* pSrc = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);//读入图像强制转换为单通道图
for(int j = 1; j <= ConfigureDlg.m_row; j++ )
{
IplImage* pNewImage = cvCreateImage(cvSize(4096,1),IPL_DEPTH_8U,1);//创建一个单通道的图像
uchar* data0;
uchar* data1;
data0 = (uchar*)pSrc->imageData;
data1 = (uchar*)pNewImage->imageData;
for(int k = 1; k <= 4096; k++)
{
data1[(j-1)*pSrc->widthStep + k] = data0[(j-1)*pSrc->widthStep + k];
}
/*------------------------------*/
IplImage* pResizeImage = cvCreateImage(cvSize(4096,256),IPL_DEPTH_8U,1);
pResizeImage = pDlg->ResizeImage(256,pNewImage);//图像的放大
//放大后图像的保存
CString filename,temp1,temp2,temp3;
int i = pDlg->ImageCount++;
temp1.Format(_T("%d"),i);
int s;//路径的尺寸
s = pDlg->m_ResizePath.GetLength();
temp2 = pDlg->m_ResizePath.Left(2);//得到路径前面的2个字符
temp3 = pDlg->m_ResizePath.Right(s-2);
filename = temp2+ "\\" + temp3 + "\\" + temp1 + ".bmp";
cvSaveImage(filename,pResizeImage);//将采集的图片保存到相应的地址下面
/*---------------------------*/
float t = pDlg->AmpAnaly(pNewImage);//图像的分析
pDlg->DataStore(j,t);
cvReleaseImage(&pNewImage);
cvReleaseImage(&pResizeImage);
}
cvReleaseImage(&pSrc);
}
请问大家,为什么我执行到
for(int k = 1; k <= 4096; k++)
{
data1[(j-1)*pSrc->widthStep + k] = data0[(j-1)*pSrc->widthStep + k];
}
的时候老是报0xC0000005: 写入位置 0x01d20000 时发生访问冲突