Vb.Net检查图像是否存在于另一个图像中

rog*_*ety 5 vb.net pixel bitmap

我试图检查另一个图像中是否存在图像的一部分

说明:


完整图像: http :
//imageshack.us/photo/my-images/526/part1g.png/

图像的第二部分,我想检查他是否存在于完整的图像:
http : //imageshack.us/photo/my-images/706/part2p.png/

如果第二部分是存在,那么函数返回true
有一个可以检查它是否存在的函数?


(如果它只是单像素然后它很容易,但我想检查图像中是否存在部分图像)
有一个有效的代码,但它会检查图像中是否存在单个像素:

    Dim bmp As Bitmap = PictureBox1.Image
    For x As Integer = 0 To bmp.Width - 1
        For y As Integer = 0 To bmp.Height - 1
            If bmp.GetPixel(x, y) = Color.FromArgb(48, 48, 48) Then
                msgbox("Pixel Exist In Image!!!")
            End If
        Next
    Next
Run Code Online (Sandbox Code Playgroud)

Sey*_*ren 0

您可以编写一个函数来循环遍历第二个图像的每个可能的左上角像素,然后将像素复制到另一个位图对象,然后将新的位图对象与第二个图像像素进行比较。

所以首先你会循环遍历像素

  • x < 主图像宽度 - 子图像宽度
  • y < 主图像高度 - 子图像高度

如果主图像中 (x, y) 处的像素与子图像中 (0, 0) 处的像素具有相同的颜色值,则复制从 (x, y) 开始的区域,其尺寸与您的图像相同使用像这样的函数将子图像从主图像转换为新的 Bitmap 对象 - http://msdn.microsoft.com/en-us/library/aa457087.aspx

然后只需循环遍历新对象和子图像中的像素,比较相同坐标处的颜色。如果遇到差异,请打破循环。如果到达此循环的末尾,则表示匹配并可以返回 True,否则继续循环主图像的像素,直到达到子图像无法再容纳的点,然后返回 False 。