Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: gsukhado on February 28, 2018, 03:11:18 PM
-
День добрый.
Во многих приложениях сейчас изображения имеют разный размер, в зависимости от того, в какой части экрана они находятся (например, внизу экрана - больше, типа как "рядом", а вверху экрана меньше, типа "далеко"). В остальном изображения подобны, точнее, гомотетичны между собой.
За счет таких плавающих размеров искать по стандартному совпадению пиксел - почти не вариант, только если делать скрины в разных частях экрана и последовательно каждый из них искать.
Может быть есть алгоритмы, как находить такие гомотетически изменяющиеся картинки?
-
Можно искать цвет из этой картинки и проверять относительно этого цвета другие в некоторой зоне от него. Если все совпадает значит картинка найдена, если нет проверяем следующую координату.
GETSCREEN
SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 255)
$ARR_NUM = 0
$SHIFT_X = 1 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 1
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
IF(($X > $X2) | ($Y > $Y2))
$X2 = $X + $SHIFT_X
$Y2 = $Y + $SHIFT_Y
IF_PIXEL_IN($X-5, $Y-5, $X+10, $Y+10, 16777215) // проверяем цвет вокруг координаты
LCLICK($X, $Y) // Клик
WAITMS(100)
END_IF
END_IF
END_CYC
UNDEFINE($ARR_SCAN)
Можно написать несколько вложений IF_PIXEL_IN чтобы проверить несколько входящих цветов для точности.
-
Вообще для определения уникальных цветов есть программка Unique Colors Search
http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572 (http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572)