#include <WinAPIGdi.au3>
#include <Array.au3>
Global $nK, $Karta[9] =['6','7','8','9','10','J','Q','K','A'], $zKarta[9]
$iT = TimerInit()
_PixelSearchMult(582, 421, 12, 18, 0x535355, 85);Координаты прямоугольника, цвет и оттенок искомыхточек распознаваемой карты
$nArr=_ArrayMaxIndex($zKarta,1);Находим в массиве позицию карты которая набрала больший вес
ConsoleWrite($Karta[$nArr]& @LF);Выводим буквенное значение карты набравшей больший вес (распознанной)
ConsoleWrite(TimerDiff($iT) & @LF)
Func add($String)
$nVar = StringSplit($String, ',');Получаем в массив карты к которым могут относиться найденные точки
For $i = 1 To $nVar[0]
$zKarta[_ArraySearch($Karta, $nVar[$i], 0, 0, 0, 1)]+=1 ;Добавляем +1 к весу возможной карты
Next
EndFunc
Func _PixelSearchMult($i_X, $i_Y, $i_Width, $i_Height, $i_Color, $i_Shade = 0, $h_Wnd = 0, $f_FirstOnly = False)
Local $i_Size = $i_Width * $i_Height, $a_Pixels[$i_Size + 1][2] = [[0]], $h_DC, $h_MemDC, $h_Bitmap, $t_Bits, $i_Index
$h_DC = _WinAPI_GetDC($h_Wnd)
$h_MemDC = _WinAPI_CreateCompatibleDC($h_DC)
$h_Bitmap = _WinAPI_CreateCompatibleBitmap($h_DC, $i_Width, $i_Height)
_WinAPI_SelectObject($h_MemDC, $h_Bitmap)
_WinAPI_BitBlt($h_MemDC, 0, 0, $i_Width, $i_Height, $h_DC, $i_X, $i_Y, 0x00CC0020) ; $SRCCOPY
_WinAPI_DeleteDC($h_MemDC)
_WinAPI_ReleaseDC($h_Wnd, $h_DC)
$t_Bits = DllStructCreate('dword[' & $i_Size & ']')
_WinAPI_GetBitmapBits($h_Bitmap, 4 * $i_Size, DllStructGetPtr($t_Bits))
_WinAPI_DeleteObject($h_Bitmap)
If $i_Shade Then
Local $a_RGB[3] = [BitAND(BitShift($i_Color, 16), 0xFF), BitAND(BitShift($i_Color, 8), 0xFF), BitAND($i_Color, 0xFF)]
For $i = 1 To $i_Height - 1
For $j = 1 To $i_Width - 1
$i_Index += 1
Local $i_Clr = BitAND(DllStructGetData($t_Bits, 1, $i_Index), 0x00FFFFFF)
Switch BitAND(BitShift($i_Clr, 16), 0xFF)
Case $a_RGB[0] - $i_Shade To $a_RGB[0] + $i_Shade
Switch BitAND(BitShift($i_Clr, 8), 0xFF)
Case $a_RGB[1] - $i_Shade To $a_RGB[1] + $i_Shade
Switch BitAND($i_Clr, 0xFF)
Case $a_RGB[2] - $i_Shade To $a_RGB[2] + $i_Shade
$a_Pixels[0][0] += 1
$_K=$j&"."&$i
Zna4($_K)
If $f_FirstOnly Then ExitLoop 2
EndSwitch
EndSwitch
EndSwitch
Next
Next
EndIf
EndFunc ;==>_PixelGetArray
Func Zna4($_K)
Switch $_K
Case 1.1
add('7,8,J,Q');Добавляет +1 к указанным картам
Case 2.1
add('8,J,Q')
Case 3.1
Case 4.1
Case 5.1
Case 6.1
Case 7.1
Case 8.1
Case 9.1
Case 10.1
Case 11.1
Case 12.1
Case 1.2
Case 2.2
add('8,J,Q')
Case 3.2
Case 4.2
Case 5.2
Case 6.2
Case 7.2
Case 8.2
add('6')
Case 9.2
add('J,Q')
Case 10.2
add('8,J,Q')
Case 11.2
add('J,Q')
Case 12.2
Case 1.3
Case 2.3
Case 3.3
add('8,J,Q')
Case 4.3
Case 5.3
Case 6.3
Case 7.3
add('7')
Case 8.3
add('7')
Case 9.3
add('8,Q')
Case 10.3
add('8,6')
Case 11.3
add('8,6')
Case 12.3
Case 1.4
add('8,Q')
Case 2.4
add('7')
Case 3.4
add('7')
Case 4.4
add('8,J,Q')
Case 5.4
Case 6.4
Case 7.4
add('7')
Case 8.4
add('7')
Case 9.4
add('9')
Case 10.4
add('9')
Case 11.4
add('6')
Case 12.4
Case 1.5
Case 2.5
add('7,8')
Case 3.5
add('7')
Case 4.5
add('7,Q')
Case 5.5
add('8,J,Q')
Case 6.5
Case 7.5
Case 8.5
add('7')
Case 9.5
add('7')
Case 10.5
add('8')
Case 11.5
add('8,6')
Case 12.5
Case 1.6
add('6')
Case 2.6
add('7,8')
Case 3.6
add('7,8')
Case 4.6
add('7')
Case 5.6
add('7')
Case 6.6
add('8')
Case 7.6
Case 8.6
add('7')
Case 9.6
add('7')
Case 10.6
Case 11.6
add('8')
Case 12.6
Case 1.7
add('8,6')
Case 2.7
add('8,6')
Case 3.7
add('7,8')
Case 4.7
Case 5.7
add('7')
Case 6.7
add('7')
Case 7.7
Case 8.7
Case 9.7
add('7')
Case 10.7
add('7')
Case 11.7
Case 12.7
Case 1.8
add('8')
Case 2.8
add('8,6')
Case 3.8
add('7,8,6')
Case 4.8
add('8')
Case 5.8
add('8')
Case 6.8
add('7')
Case 7.8
add('7')
Case 8.8
Case 9.8
Case 10.8
add('7')
Case 11.8
add('7')
Case 12.8
Case 1.9
add('8')
Case 2.9
add('8')
Case 3.9
add('7,6')
Case 4.9
add('7,6')
Case 5.9
add('8')
Case 6.9
add('8')
Case 7.9
add('7')
Case 8.9
add('7')
Case 9.9
Case 10.9
Case 11.9
add('7')
Case 12.9
Case 1.10
add('8,Q')
Case 2.10
add('8,Q')
Case 3.10
add('7')
Case 4.10
add('7,6')
Case 5.10
add('6')
Case 6.10
add('8')
Case 7.10
add('8,Q')
Case 8.10
add('7')
Case 9.10
Case 10.10
Case 11.10
Case 12.10
Case 1.11
Case 2.11
add('7')
Case 3.11
add('7,8,Q')
Case 4.11
add('7,8')
Case 5.11
add('6')
Case 6.11
add('6')
Case 7.11
add('8,Q')
Case 8.11
add('7')
Case 9.11
Case 10.11
Case 11.11
Case 12.11
Case 1.12
Case 2.12
Case 3.12
Case 4.12
add('7,8,Q')
Case 5.12
add('7,8,J,Q')
Case 6.12
add('8,$J,Q')
Case 7.12
add('8,Q')
Case 8.12
add('7')
Case 9.12
Case 10.12
Case 11.12
Case 12.12
Case 1.13
Case 2.13
Case 3.13
Case 4.13
Case 5.13
add('7')
Case 6.13
add('J,Q')
add('6')
Case 7.13
add('J,Q')
Case 8.13
add('7')
Case 9.13
add('7')
Case 10.13
add('7')
Case 11.13
Case 12.13
Case 1.14
Case 2.14
Case 3.14
Case 4.14
Case 5.14
add('6')
Case 6.14
add('6')
Case 7.14
add('6')
Case 8.14
Case 9.14
add('7')
Case 10.14
add('7')
Case 11.14
add('7')
Case 12.14
Case 1.15
add('7')
Case 2.15
Case 3.15
Case 4.15
Case 5.15
Case 6.15
Case 7.15
add('7,8,6')
Case 8.15
add('7,8,J,Q')
Case 9.15
add('7,Q')
Case 10.15
Case 11.15
Case 12.15
Case 1.16
Case 2.16
Case 3.16
add('6')
Case 4.16
Case 5.16
Case 6.16
Case 7.16
add('7,8,J,Q')
Case 8.16
add('7,8,J,Q')
Case 9.16
add('7,8,J,Q')
Case 10.16
add('7,8,J,Q')
Case 11.16
add('7')
Case 12.16
Case 1.17
Case 2.17
Case 3.17
Case 4.17
add('7,8,6')
Case 5.17
Case 6.17
add('7,8,Q')
Case 7.17
add('7,8,J,Q')
Case 8.17
add('7,8,J,Q')
Case 9.17
add('7,8,J,Q')
Case 10.17
add('7,8,J,Q')
Case 11.17
add('7,8,J,Q')
Case 12.17
EndSwitch
EndFunc