Author Topic: Почему находится картинка, которая не должна находится?  (Read 6618 times)

0 Members and 1 Guest are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Конечно долго, иначе как процент сверить. И чем он меньше, тем больше холостых проверок на каждый пиксел области.

Только уменьшать область и заготовку. Какие размеры сейчас?


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Кто то там говорил про то, что Сталин на флаге РФ есть. Так вот, я проверил, и действительно он там есть  :o . И даже не при 10%, а при 25% !!!!




Не верите? Можете проверить.

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "stalin.bmp", -1, 25)
   print("Сталин найден на флаге РФ в координатах - ",$_return1,"x", $_return2)
else
   print("Нету Сталина :(")
END_IF
halt

Искомая картинка во вложении.




ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Vint :размер картинки 0.56 на 0.34 см ,область сканирования "510,242, 1081,677"

dramster : не исключая фона ты на ней и фигу сможешь найти ))
« Last Edit: December 26, 2017, 06:21:44 PM by ikage »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Vint :размер картинки 0.56 на 0.34 см ,область сканирования "510,242, 1081,677"

dramster : не исключая фона ты на ней и фигу сможешь найти ))

0.56 на 0.34 см  :D - линейкой мерял?

кстати и на твоей картинке фона исключения нету.

а вообще, согласен, что такого типа картинки очень сложно найти, где буквы сливаются с фоном и постоянно сглаживаются, хз как у тебя там находит их. или там фон статичен?


ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
х.з чем паинт меряет ,но там в настройках свойства - можно и в сантиметрах выставить.фон - морская гладь на паузе,colormod не справляется т.к при увеличении цветокоррекций появляются белые квадратики и они не всегда совпадают с картинкой т.к она движется.мне в моём случае фон ненужно исключать ,при 10% скане картинка ищется идеально ,пропусков не было

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
х.з чем паинт меряет ,но там в настройках свойства - можно и в сантиметрах выставить.фон - морская гладь на паузе,colormod не справляется т.к при увеличении цветокоррекций появляются белые квадратики и они не всегда совпадают с картинкой т.к она движется.мне в моём случае фон ненужно исключать ,при 10% скане картинка ищется идеально ,пропусков не было

 находит, это хорошо. но 10% это очень долго. совет для ускорения:
 скорее всего пикселы твоего фона врядли совпадут при поиске, они с каждым фреймом разные. а вот эти самые светлые, которые на верхушках букв возможно и статичны, какраз посчитал их - гдето 26-28 штук, а 10% от твоей заготовки, это 26 пикселей.
 есть 2 выхода. первый - это закрасить все темные пиксели игнорируемым цветом, и дальше проверять процент от 70 до 90%. второй - это применить минимальную цветокоррекцию, чтобы все темные пиксели стали одним цветом, и опятьже процент увеличивать до 70-90%. колормод 3-4 вполне приравнивает все цвета фона в один.

2. поиск 10% совпадения- не бред,а жизненная необходимость (clormod не помогает ) и он реально работает

 что значит не помогает? тоесть не находит вообще? есть подозрения, что не верно используется колормод. я надеюсь искомую заготовку сохранял в томже колормоде, что и использовался при поиске? увеличение уровня цветокоррекции может привести лишь к тому, что картинку начнет находить в неположенном месте.

и еще, скинь скрин своей искомой области в момент присутствия искомой картинки. я бы поэкспериментировал с коррекцией и процентом.
« Last Edit: December 26, 2017, 10:39:08 PM by dramster »

ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
вот скрин

ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
вот второй скрин

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
И что здесь "clormod не помогает"?

COLORMODE 8 - даёт идеальное отделение.
"Moby Dick" между скринами отличается в 1 (один!) пиксель.
"Trancus" не отличается совсем. Т.е. 100%.
Можно накинуть чуток %, если существует возможность наложения имени на другую рыбу.
« Last Edit: December 27, 2017, 03:59:11 PM by Vint »


ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
В игре не помогает ,все параметры colormod пробовал.Идеально ищет только ту картинку с которой сделан скри - другие игнорит

ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Плевать.С 10% работает идеально,сканю 2 картинки одновременно, с задачей справляется без нарекании.Если автор в следующем релизе оптимизирует скорость скано то будет хорошо,нет - и так сойдет ))

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Если автор в следующем релизе оптимизирует скорость скано то будет хорошо,нет - и так сойдет ))
да тут скорость скана итак мегакосмос!!! главное правильно его использовать. никому и в голову не приходило искать чтолибо на экране с 10% точностью.  как минимум 60-70%. если процент меньше, то, во первых - возможны ложные находки, как со сталином на флаге, во вторых - значительно увеличивает время поиска, в третьих - излишне нагружается цп. насчет "возможны ложные находки", это тебе везет, что водичка вся синяя, а рыбки серые. вот тебе и везет, что твои 10% пикселей больше нигде и нету. в основном в играх все цвета радуги, и разбросаны по всему экрану.

до тебя все хотят донести, что ты используешь колормод не правильно!!! а ты все равно стоишь на своих 10% в несколько секунд. при правильном подходе скорость поиска увеличится как минимум раз в 100, и плюс к этому проц не так будет загружен.

как писал Vint выше - COLORMODE 8 - даёт идеальное отделение. если так, то при поиске с COLORMODE 8, тебе потребуется заскринить исомую картинку в томже уровне цветокоррекции.

то есть берем вот такой код

Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 8)
GETSCREEN
COLORMODE(8)
SCREENSHOT
HALT

запускаем. открываем сохраненный скрин паинтом (скрин в папке screens в папке с прогай, либо в папке с сохраненным кодом). вырезаем нужное имя рыбы, при COLORMODE 8 желательно захватить не 2-3 буквы, а все 6-8, чтоб наверняка. сохраняем этот фрагмент (естественно в BMP 24bit).
 
все, теперь можем обработанную картинку искать с использованием цветокоррекции.
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "имя сохраненной заготовки с цветокоррекцией.bmp", -1, 95)
   print("нашли в координатах - ",$_return1," x ", $_return2)
   WAITMS(100)
else
   print("не нашли, значит нужно уменьшить процент совпадения!!!")
   WAITMS(100)
END_IF
halt

если вдруг COLORMODE 8  чем то не угодит, мало ли, то можешь поэкспериментировать таким же методом с другими уровнями коррекции.
« Last Edit: December 28, 2017, 01:05:56 AM by dramster »

ikage

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile

если вдруг COLORMODE 8  чем то не угодит, мало ли, то можешь поэкспериментировать таким же методом с другими уровнями коррекции.

Спасибо мил человек за разжёванный ответ,но это я всё проделывал .COLORMODE выставлял от 8 до 1 ,картинка искалась мгновенно,но толька та с которой был сделан скрин,другие аналогичные картинки тупо игнорировались (наверное в игре стоит какая то защита).на скринах с разными ракурсами может и будет работать (не пробовал) ,но в самой игре этот метод не помогает.Единственный оптимальный вариант для меня ( хоть он и выглядит дико ) это IF_PICTURE_IN (0,0, $_xmax,$_ymax, "имя сохраненной заготовки с цветокоррекцией.bmp", -1, 10) хоть скан и происходит раз в 1 секунду.Что бы вы не говорили но ЭТО работает и удовлетворяет все условия кроме скорости.Самое главное ложных срабатывании нет и нет пропуска искомой картинки.Тест 60ч без перерыва - полёт нормальный

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
вот на такой картинке , при поиске в области которая захватывает цифру "2",  найдет все цифры. а чтобы найти только цифру "2", достаточно указать область поиска в один пиксель (верхний левый двойки).

Чуваак, как ты вечно умудряешься находить все эти редкие закономерности?))  :o