这里img1->p_w_picpathdata指的图像第一行的首地址,pt.y是指图像的height(图像高像素数即行数),y 乘以img->widthstep(排列的图像行大小)即首地址加上行数乘以每行总数,得到第y行的首地址。

widthstep是指图像每行所占的字节数,主要要和width区别,width是指每行所含的像素个数,但是一个像素也可能占一个字节,也可能占三个字节或者四个。p_w_picpathdata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->p_w_picpathData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以你的那句代码也可以写成

((uchar*)(Img1->p_w_picpathData + Img1->widthStep*pt.y+pt.x)),都是指该像素点的像素值,至于强制类型转换,是因为会产生一些负值,而像素值是不能为负的。