抱歉英语不好。我已经在互联网上搜索了我正在寻找的东西,但从未找到我真正需要的东西。
我有这段代码比较两个图像,如果两个图像相等则返回 true。
private void button20_Click(object sender, EventArgs e)
{
Bitmap myBitmap1 = new Bitmap("Images\\img1.png");
Bitmap myBitmap2 = new Bitmap("Images\\img2.png");
bool equals = true;
Rectangle rect = new Rectangle(0, 0, myBitmap1.Width, myBitmap1.Height);
BitmapData bmpData1 = myBitmap1.LockBits(rect, ImageLockMode.ReadOnly, myBitmap1.PixelFormat);
BitmapData bmpData2 = myBitmap2.LockBits(rect, ImageLockMode.ReadOnly, myBitmap2.PixelFormat);
unsafe
{
byte* ptr1 = (byte*)bmpData1.Scan0.ToPointer();
byte* ptr2 = (byte*)bmpData2.Scan0.ToPointer();
int width = rect.Width * 3; // for 24bpp pixel data
for (int y = 0; equals && y < rect.Height; y++)
{
for (int x = 0; x < width; x++)
{
if (*ptr1 != *ptr2)
{
equals = false;
break;
}
ptr1++;
ptr2++;
}
ptr1 += bmpData1.Stride - width;
ptr2 += bmpData2.Stride - width;
}
}
myBitmap1.UnlockBits(bmpData1);
myBitmap2.UnlockBits(bmpData2);
MessageBox.Show(Convert.ToString(equals));
}
一切都很好。
但是,如果图像 1 在图像 2 内,我怎样才能使此代码返回 true?我的意思是,我不需要验证 image1 和 image2 是否相等,我需要验证是否可以在图像 2 中找到图像 1!
而且,如果我在图像 2 中找到图像 1,我如何将它在图像 2 中找到图像 1 的位置的确切点坐标 (X, Y) 存储在变量中?
想法?谢谢