Author Topic: Фильтр значений массива координат  (Read 2426 times)

0 Members and 1 Guest are viewing this topic.

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Доброго времени суток.

Помогите пожалуйста решить задачу.
Flash игра (Forge Of Empires).
Осуществляю поиск изображений командой SCANPICTURE с коррекцией в 64 цвета.
В целевом изображении закрашен фон, необходимый цвет  указан в bgcolor.
Точность поиска CURRENCY подобрана опытным путем в 60%. Вероятно изображения в игре отличаются друг от друга, в зависимости от фона (прозрачные и полупрозрачные пиксели).
В связи с достаточно большим допуском, в массив попадают значения отличные в один пиксель по X или Y.
Code: [Select]
15:26:17 Найдено X = 308 Y = 785
15:26:20 Найдено X = 307 Y = 785
Как отфильтровать ближайшие значения в массиве? Либо как повысить точность поиска?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Фильтр значений массива координат
« Reply #1 on: May 05, 2017, 05:47:16 PM »
В шаблонах есть код для SCANPXL там я как раз сделал отсев ближайщих значений. Этот код можно применить и для SCANPICTURE

Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)
$ARR_NUM = 0
$SHIFT_X = 10 // смещение (кол-во игнор пикселов после найденного)
$SHIFT_Y = 10
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
      LCLICK($X, $Y) // Клик
      WAITMS(100)
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Фильтр значений массива координат
« Reply #2 on: May 06, 2017, 07:22:33 PM »
Премного благодарен.