Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: gsukhado on February 28, 2018, 03:11:18 PM

Title: Поиск гомотетичных фигур
Post by: gsukhado on February 28, 2018, 03:11:18 PM
День добрый.
Во многих приложениях сейчас изображения имеют разный размер, в зависимости от того, в какой части экрана они находятся (например, внизу экрана - больше, типа как "рядом", а вверху экрана меньше, типа "далеко"). В остальном изображения подобны, точнее, гомотетичны между собой.
За счет таких плавающих размеров искать по стандартному совпадению пиксел - почти не вариант, только если делать скрины в разных частях экрана и последовательно каждый из них искать.
Может быть есть алгоритмы, как находить такие гомотетически изменяющиеся картинки?
Title: Re: Поиск гомотетичных фигур
Post by: Oraven on February 28, 2018, 05:58:59 PM
Можно искать цвет из этой картинки и проверять относительно этого цвета другие в некоторой зоне от него. Если все совпадает значит картинка найдена, если нет проверяем следующую координату.

Code: (clickermann) [Select]
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 чтобы проверить несколько входящих цветов для точности.
Title: Re: Поиск гомотетичных фигур
Post by: Oraven on March 01, 2018, 07:01:48 AM
Вообще для определения уникальных цветов есть программка 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)