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

发布时间:2021-03-28 05:42:01

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

网友回答

【答案】 你应该是刚学opncv吧,widthstep是指图像每行所占的字节数,主要要和width区别,width是指每行所含的像素个数,但是一个像素也可能占一个字节,也可能占三个字节或者四个.imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以你的那句代码也可以写成
  ((uchar*)(Img1->imageData + Img1->widthStep*pt.y+pt.x)),都是指该像素点的像素值,至于强制类型转换,是因为会产生一些负值,而像素值是不能为负的.不用加分,
以上问题属网友观点,不代表本站立场,仅供参考!