VC++如何打开两幅BMP 图像?
发布网友
发布时间:2022-05-01 16:04
我来回答
共1个回答
热心网友
时间:2022-06-19 05:40
将两个图读入到内存,先对比长和宽,然后每个点对比颜色值。以下代码请参考。
Mem1.CreateCompatibleDC(0);
HBITMAP old1=(HBITMAP)Mem1.SelectObject(m_image1);
Mem2.CreateCompatibleDC(0);
HBITMAP old2=(HBITMAP)Mem2.SelectObject(m_image2);
COLORREF c1,c2;
DIBSECTION ds1,ds2;
BITMAPINFOHEADER &bm1=ds1.dsBmih;
GetObject(m_image1,sizeof(ds1),&ds1);
int w1=bm1.biWidth;
int h1=bm1.biHeight;
BITMAPINFOHEADER &bm2=ds2.dsBmih;
GetObject(m_image2,sizeof(ds2),&ds2);
int w2=bm2.biWidth;
int h2=bm2.biHeight;
if(w1!=w2 || h1!=h2) return false;
CPoint point;
for(point.x=1;point.x<=w1;point.x++)
for(point.y=1;point.y<=h1;point.y++)
{
c1=Mem1.GetPixel(point);
c2=Mem2.GetPixel(point);
if(c1-c2>150000)
{
ng++;//这里指不同的值差多少算不相同
}
else ok++;
//if(ok/(ok+ng)<0.8) return false;
}