opencv 求解释语句:((uchar*)(Img1->imageData + Img1->widthStep*pt.

问题描述:

opencv 求解释语句:((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x]的具体含义
如题.
首先widthStep;/* 排列的图像行大小,以字节为单位 */能否用通俗点语言解释一下“排列的图像行大小”?
然后是Img->imageData + Img->widthStep*pt.y,widthStep乘以y坐标加到imagedata里是什么意思;
(uchar*)应该是强制类型转换吧?
其次整体加完后,放在[pt.
最后,整个语句起到的作用?
opencv小菜鸟,请高手不吝赐教,答的好有加分
1个回答 分类:综合 2014-10-28

问题解答:

我来补答
你应该是刚学opncv吧,widthstep是指图像每行所占的字节数,主要要和width区别,width是指每行所含的像素个数,但是一个像素也可能占一个字节,也可能占三个字节或者四个.imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以你的那句代码也可以写成
((uchar*)(Img1->imageData + Img1->widthStep*pt.y+pt.x)),都是指该像素点的像素值,至于强制类型转换,是因为会产生一些负值,而像素值是不能为负的.不用加分,
 
 
展开全文阅读
剩余:2000