求助-关于如何判断是否是相同像素的点
来源为一图像拼接程序,里面有一段代码是用来实现 判断是否是相同像素的点 我看了好久还是无法理解 if(abs(p[i]-q[i])>50) 是如何完成判断的
源代码是这样的:
/********************************************************************************
用于判断是否是相同象素的点
BOOL CDlgMosaics::IsSamePix(CDib *bmp1, CDib *bmp2, int x1, int y1, int x2, int y2)
{
//LPBYTE m_lpImage DIB位图数据块地址
BYTE *p,*q;
p=bmp1->m_lpImage+GetPixOffset(x1,y1,bmp1);
q=bmp2->m_lpImage+GetPixOffset(x2,y2,bmp2);
for(int i=0;i<bmp1->m_lpBMIH->biBitCount/8;i++)
if(abs(p[i]-q[i])>50)
return FALSE;
else
return TRUE;
}
望各位高人解答,感激不尽
[解决办法]
p=bmp1->m_lpImage+GetPixOffset(x1,y1,bmp1);
之后不就取得了bmp1 在x1,y1点 像素对应内存地址首
同样的 ,q 取得了bmp2 在x2,y2点 像素对应内存地址首
bmp1->m_lpBMIH->biBitCount 是图像的位数
比方说 它=24 就说明这个图像每个像素占用 24位 ,也就是3字节
那么p[i] (i=0,1,2)就是该像素每个字节的值
abs(p[i]-q[i])>50 是在比较、50就是所谓的阀值
大于50认为不是