OpenCV中IplImage和单字节char*的相互转换
- 从 IplImage到 char* :
- data = image->imageData //对齐的图像数据
- 或者data = image->imageDataOrigin //未对齐的原始图像数据
- 从 char* 到 IplImage:
- image =cvCreateImageHeader(cvSize(width,height), depth, channels);
- cvSetData(image, data, step);
step指定IplImage图像每行占的字节数。需要注意是,在释放空间时不能直接使用cvReleaseImage,而需cvReleaseImageHeader,然后再delete data,这也是OpenCV里边“自己管理内存”的思想。
IplImage有两个属性非常值得关注,稍不留神就会导致错误:一是width属性;二是widthStep属性。前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。
可以看出IplImage的widthStep并不等于width*channel,它是4字节对齐的。
举例:图像灰度化
可以看出IplImage的widthStep并不等于width*channel,它是4字节对齐的。
举例:图像灰度化