或者
unsigned char* ptr=&((unsigned char*)(img->imageData+img->widthStep*y))[x*3];
I(x, y)blue ~ ptr[0];
I(x, y)green~ ptr[1];
I(x, y)red ~ ptr[2];
对32bit , 1通道 , float*类型的图像I---IplImage* img:
I(x, y)~((float*)(img->imageData+img->widthStep*y))[x];
对32bit , 3通道 , float*类型的图像I---IplImage*img;
I(x, y) blue ~((float*)(img->imageData+img->widthStep*y))[3*x];
I(x, y) green ~(( float *)(img->imageData+img->widthStep*y))[x*3+1];
I(x, y) red ~(( float *)(img->imageData+img->widthStep*y))[x*3+2];
对64bit , 3通道 , double*类型的图像数据I--- IplImage*img;
image=cvCreateImage(cvSize(111,113),IPL_DEPTH_64F,3);
这里widthstep=(111*3*sizeof(double)+3)/4*4=2664;因为111*3*sizeof(double)=2664已经正好是4的倍数了 , 是以无需弥补字节 。
若是用指针拜候第31行、51列的图像数据 ,
则这个数据为double类型的 , image->imageData为unsigned char类型 ,
是以可以转换当作double , 经由过程double指针来拜候:
①
double *data=https://vvvtt.com/article/(double*)image->imageData;
double val=*(data+31*width+51);
②或者经由过程unsigned char指针找到(31,51)处的地址 ,
然后转换当作double指针进行拜候:
unsigned char* data=https://vvvtt.com/article/image->imageData;
double val=*(double*)(data+31*image->widthStep+51*sizeof(double));
对于IplImage , 指针拜候可以参考以上两种体例 , 其实这素质就是数据类型的转换罢了 。
一般 , 拜候图像像素方式 , 格局:
对于N通道 , T类型的图像 ,
I(x,y)c~((T*)(img->imageData+img->widthStep*y))[x*N+c];

4widthStep常识总结:
width暗示图像的每行像素数 ,
widthStep暗示存储一行像素需要的字节数 , widthStep必需是4的倍数 , 从而实现字节对齐 , 有利于提高运算速度 。
若是8U单通道图像宽度为3 , 那么widthStep是4 , 加一个字节补齐 。
这个图像的一行需要4个字节 , 只利用前3个 , 最后一个空着 。
也就是一个宽3高3的图像的imageData数据大小为4*3=12字节 。
【注】:分歧数据类型长度的图像 , widthStep也不不异;
widthStep的值的计较有两种环境:
①当(width*3)%4=0 , 这时width*3=widthStep;
②当(width*3)%4 !=0 , 此时widthStep=(width/4+1)*3 。
Mat的数据并不是字节对齐的;
直接将cv::Mat转换为IplImage类型 , 并不会将字节对齐 , 只是加了个文件头罢了;
是以需要如下操作:

5BYTE*与IplImage*之间的转换:
IplImage* iplImage:opencv中图像数据头;
BYTE* data:内存中的图像数据 , 一般为工业相机采集的图像数据;
①由IplImage*转BYTE*图像数据:
data = https://vvvtt.com/article/iplImage->imageDataOrigin; //未对齐的原始图像数据
或者
data = https://vvvtt.com/article/iplImage->imageData; //已对齐的图像数据
②BYTE*转IplImage*图像数据
猜你喜欢
- OpenCV:TermCriteria迭代终止条件
- OpenCV:xml文件的读取与写入
- OpenCV:waitKey函数
- OpenCV:resize函数 VS vector:resize函数
- OpenCV:norm-范数求解函数
- OpenCV:goodFeaturesToTrack角点检测的应用
- OpenCV:相机标定示例程序的使用
- OpenCV:相机标定函数和程序
- 如何在Win10上安装STEP 7 V14
- 科学家庭理财step by step,规划幸福人生
