Author Topic: Подсчет найденных совпадений картинки  (Read 2828 times)

0 Members and 1 Guest are viewing this topic.

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Здравствуйте, нужно, чтобы IF_PICTURE_IN или WHILE, не знаю, что лучше в данном случае.
В общем в 2 словах. MMORPG, квест от администрации.
По средине экрана пишется много текста, что то типа " , :::::: .... :::: ... "
И задача игроков быстро указать сколько точек в данном предложении.
Так вот, картинку в виде этой точки я сохранил. А теперь нужно, чтобы скрипт подсчитал сколько там точек и быстро мне вывел в цифру, которую я смогу вставить в чат.
Заранее спасибо:)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #1 on: December 15, 2017, 12:40:22 PM »
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)//область поиска и имя искомого изображения впиши свою
print("количество кайденных картинок - ", ARRSIZE($ARR_SCAN)/2)
HALT

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #2 on: December 15, 2017, 12:45:48 PM »
и имей в виду, если фон у твоего текста динамичен, то придется использовать игнорируемый цвет фона входного изображения.

если чтото не получится, то скинь сюда скрин своего текста (bmp или png) для наглядности.

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #3 on: December 15, 2017, 01:37:45 PM »
Да, фон динамичен, уже пробовал с модом (6) вроде как более менее определяет

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #4 on: December 15, 2017, 01:50:39 PM »
Вопрос, как сделать так, чтобы без halt оно не спамило мне весь лог, а отображалось в лог только когда там нашлась хотя бы одна точка?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #5 on: December 15, 2017, 02:33:46 PM »
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)//область поиска и имя искомого изображения впиши свою
IF(ARRSIZE($ARR_SCAN) > 0)
   LOGWRITE ("Количество точек: ", ARRSIZE($ARR_SCAN)/2)
   LOGSHOW (1, 100,100)
   UNDEFINE($ARR_SCAN)
   HALT
END_IF
WAITMS(100)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #6 on: December 15, 2017, 02:35:50 PM »
Вопрос, как сделать так, чтобы без halt оно не спамило мне весь лог, а отображалось в лог только когда там нашлась хотя бы одна точка?
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)//область поиска и имя искомого изображения впиши свои
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)//область поиска и имя искомого изображения впиши свои
   print("количество кайденных картинок - ", ARRSIZE($ARR_SCAN)/2)
   UNDEFINE($ARR_SCAN)
END_IF
waitms(200)

и насчет фона, я имел ввиду использование игнорируемого цвета

Синтаксис
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа

Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..99)

то есть в твоей искомой картинке нужно зарисовать фон любым цветом, и в параметр bgcolor ввести номер этого цвета.


« Last Edit: December 15, 2017, 02:38:58 PM by dramster »

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #7 on: December 15, 2017, 03:18:29 PM »


Вот так выглядит эта точка на скрине. К сожалению у меня ее не определяет =( COLORMODE(6) использую

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #8 on: December 15, 2017, 04:15:31 PM »
не апридиляит, значит есть атличия,
процент совпадения использовать нельзя, слишком маленький размер.
сохраняйте все неопределённые точки новыми картинками и сканируйте в один массив
COLORMODE(6) использую - мало!
Будьте решительнее, симёрка -счастливое число
а васьмёрка - символ бисканечности, она точна удача принесёт
кстати и фон игнарировать не придётся, он чёрненьким всегда будет! ;D

Всё таки сказывается тот факт, что не сплю уже полтора суток. Скрин то сохранил в COLORMODE (6), а вот в коде написал вот так
GETSCREEN
SCAN...
p.s. Про colormode(8) не подумал. Сейчас вроде всё норм работает. Спасибо. Потестирую.

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #9 on: December 15, 2017, 04:32:11 PM »
не апридиляит, значит есть атличия,
процент совпадения использовать нельзя, слишком маленький размер.
сохраняйте все неопределённые точки новыми картинками и сканируйте в один массив
COLORMODE(6) использую - мало!
Будьте решительнее, симёрка -счастливое число
а васьмёрка - символ бисканечности, она точна удача принесёт
кстати и фон игнарировать не придётся, он чёрненьким всегда будет! ;D

p.s. как этот массив в набор текста извлечь?) какая команда?

komandirbk

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Подсчет найденных совпадений картинки
« Reply #10 on: December 15, 2017, 09:53:21 PM »
массив общий $ARR_SCAN для  сканирования разных картинок точки.
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture1.bmp", -1, 100)//область поиска и имя искомого изображения впиши свои
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture2.bmp", -1, 100)//область поиска и имя искомого изображения впиши свои
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture3.bmp", -1, 100)//область поиска и имя искомого изображения впиши свои
полученное число элементов массива делится на два, это тебе уже писали
и копируется в переменную
клик по месту активации игрового чата,
обьединить строку лести админам и  полученную переменную
напечатать в чат через KEYSTRING("str",50)

KEYSTRING("$ARR_SCAN",60)

Что-то не так, да?