Author Topic: Поиск гомотетичных фигур  (Read 1575 times)

0 Members and 1 Guest are viewing this topic.

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Поиск гомотетичных фигур
« on: February 28, 2018, 03:11:18 PM »
День добрый.
Во многих приложениях сейчас изображения имеют разный размер, в зависимости от того, в какой части экрана они находятся (например, внизу экрана - больше, типа как "рядом", а вверху экрана меньше, типа "далеко"). В остальном изображения подобны, точнее, гомотетичны между собой.
За счет таких плавающих размеров искать по стандартному совпадению пиксел - почти не вариант, только если делать скрины в разных частях экрана и последовательно каждый из них искать.
Может быть есть алгоритмы, как находить такие гомотетически изменяющиеся картинки?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск гомотетичных фигур
« Reply #1 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 чтобы проверить несколько входящих цветов для точности.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск гомотетичных фигур
« Reply #2 on: March 01, 2018, 07:01:48 AM »
Вообще для определения уникальных цветов есть программка Unique Colors Search
http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572