VC++如何打开两幅BMP 图像?

有两幅相同格式的BMP位图,想用VC++6.0打开,读取数据,进行比较。不知如何下手处理。先告诉我大概做法,我试试,有问题在请教。谢谢您... 有两幅相同格式的BMP 位图,想用VC++6.0 打开,读取数据,进行比较。 不知如何下手处理。先告诉我大概做法,我试试,有问题在请教。谢谢您 展开
 我来答
weiyinwu
2012-02-29 · TA获得超过1540个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:1143万
展开全部
将两个图读入到内存,先对比长和宽,然后每个点对比颜色值。以下代码请参考。
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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式