1. Подскажите, пожалуйста, как можно сравнить две картинки?
2. И как можно найти координаты картинки в картинке?
Сделал попиксельно, но процесс немного тормозит, в смысле по времени. В инет нашел один вариант, но он почему-то не всегда работает.
Данный код быстрее сравнивает две картинки, в чем может быть проблема что с некоторыми картинками не работает?
- Код: Выделить всё
Public Function compareBitmap(ByVal b1 As Bitmap, ByVal b2 As Bitmap)
If b1.Width <> b2.Width OrElse b1.Height <> b2.Height Then
Return False
End If
If b1.PixelFormat <> b2.PixelFormat Then
Return False
End If
Dim bytes As Integer
If b1.PixelFormat = Imaging.PixelFormat.Format32bppArgb Then
bytes = b1.Width * b1.Height * 4
Else
Return False
End If
Dim result As Boolean = True
Dim b1bytes(bytes - 1) As Byte
Dim b2bytes(bytes - 1) As Byte
Dim bmd1 As Imaging.BitmapData = b1.LockBits(New Rectangle(0, 0, b1.Width - 1, b1.Height - 1), Imaging.ImageLockMode.ReadOnly, b1.PixelFormat)
Dim bmd2 As Imaging.BitmapData = b2.LockBits(New Rectangle(0, 0, b2.Width - 1, b2.Height - 1), Imaging.ImageLockMode.ReadOnly, b2.PixelFormat)
System.Runtime.InteropServices.Marshal.Copy(bmd1.Scan0, b1bytes, 0, bytes)
System.Runtime.InteropServices.Marshal.Copy(bmd2.Scan0, b2bytes, 0, bytes)
For n As Integer = 0 To bytes - 1
If b1bytes(n) <> b2bytes(n) Then
result = False
Exit For
End If
Next
b1.UnlockBits(bmd1)
b2.UnlockBits(bmd2)
Return result
End Function