((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x] 的 具体含义

widthstep是指图像每行所占的字节数。

 


主要要和width区别:
width是表示图像的每行像素数,widthStep指表示存储一行像素需要的字节数。
在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。
如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,
只使用前3个,最后一个空着。也就是一个宽3高3的图像的imageData数据大小为4*3=12字节。



imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以你的那句代码也可以写成

((uchar*)(Img1->imageData + Img1->widthStep*pt.y+pt.x)),都是指该像素点的像素值
posted @ 2015-01-19 21:10  指尖下的幽灵  阅读(315)  评论(0编辑  收藏  举报