IplImage* img = cvLoadImage(ImageName, CV_LOAD_IMAGE_GRAYSCALE);
unsigned char *img_data = (unsigned char *)(img->imageData);
int widthstep = img->widthStep;
//将一维指针img_data指向的内存中的值写入成员变量二维指针data所指的内存中
//write your code here
height=img->height;
width=img->width;
unsigned char *p=img_data;
data=new unsigned char *[height];
for(int i=0;i<width;i++)
{
data[i]=new unsigned char [width];
}
int i=0;
while(p!=NULL)
{
for(int j=0;j<widthstep;j++)
{
*(*(data+i)+j)=*p;
p++;
}
i++;
}
这样会陷入死循环,原因是p是指针,它的值是地址,例如char * p = "asdfsdafsd "; 但是p != 'a ', 而是0x1010010(举例)
所以应将while语句中的P!=NULL改为 *p!=NULL。