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

Основной раздел => Использование => Topic started by: fisher on May 05, 2017, 03:59:10 PM

Title: Фильтр значений массива координат
Post by: fisher on May 05, 2017, 03:59:10 PM
Доброго времени суток.

Помогите пожалуйста решить задачу.
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
Как отфильтровать ближайшие значения в массиве? Либо как повысить точность поиска?
Title: Re: Фильтр значений массива координат
Post by: Oraven 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)
Title: Re: Фильтр значений массива координат
Post by: fisher on May 06, 2017, 07:22:33 PM
Премного благодарен.