Что нового

Сравнить 2 изображения

thehero

Новичок
Сообщения
7
Репутация
0
Нужно что бы программа сравнили 2 изображения А и Б. Изображение А является эталонным и с ним производят сравнение, а изображение Б мы получаем в известной части окна приложения. Чем мне воспользоваться, что бы написать такой скрипт ?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Код:
PixelChecksum
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Пример от Yashied'a, сравнивает изображения по их CRC сумме.

Код:
#Include <APIConstants.au3>
#Include <ScreenCapture.au3>
#Include <WinAPIEx.au3>

$Bitmap1 = _ScreenCapture_Capture('', 0, 0, 99, 99)
$Bitmap2 = _ScreenCapture_Capture('', 0, 0, 99, 99);_WinAPI_LoadImage(0, @ScriptDir & '\origin.bmp', $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE)

MsgBox(0, 'CompareBitmap', CompareBitmap($Bitmap1, $Bitmap2))

Func CompareBitmap($Bitmap1, $Bitmap2)
	Dim $pBit[2], $hDib[2], $hBitmap[2], $iCRC[2]
	$hBitmap[0] = $Bitmap1
	$hBitmap[1] = $Bitmap2
	$tSize = _WinAPI_GetBitmapDimension($hBitmap[0])
    $hDC = _WinAPI_CreateCompatibleDC(0)
    For $i = 0 To 1
        $hDib[$i] = _WinAPI_CreateDIB(DllStructGetData($tSize, 1), DllStructGetData($tSize, 2), 24)
        $pBit[$i] = _WinAPI_GetExtended()
        $hSv = _WinAPI_SelectObject($hDC, $hDib[$i])
        _WinAPI_DrawBitmap($hDC, 0, 0, $hBitmap[$i], $MERGECOPY)
        _WinAPI_SelectObject($hDC, $hSv)
        $iCRC[$i] = _WinAPI_ComputeCrc32($pBit[$i], DllStructGetData($tSize, 1) * DllStructGetData($tSize, 2) * 3)
    Next
	_WinAPI_DeleteDC($hDC)
	If $iCRC[0] = $iCRC[1] Then
		Return 1
	Else
		Return 0
	EndIf
EndFunc
 
Верх