Автокликер Clickermann :: Форум
		Основной раздел => Ошибки => Topic started by: Dreight on December 11, 2017, 10:30:33 PM
		
			
			- 
				Всем привет.
 У меня вот такой код:
 GETSCREEN 
 for($a=0, $a < 10)
 if_picture_in(476,262, 494,284,strconcat("screens/tsifra000",$a,".bmp"),-1,100)
 print($a)
 ELSE
 print("net")
 END_IF
 end_cyc
 HALT
При таком коде, почему-то, находит цифру "1". Хотя на приложенном скрине видно, что в введённую область не влазит даже пикселя цифры "1".
 У меня версия Clickermann 4.12.001, запускал я этот код прям при запуске программы, размеры всех картинок с цифрами 18х22.
 Объясните пожалуйста почему так происходит.
- 
				Ну как это можно проверить без набора твоих картинок-цифр и картинки на которой нужно искать эти цифры?
 Сложи все это в Zip архив и прикрепи к сообщению.
 Скриншот на котором нужно искать цифры должен быть в BMP или PNG формате.
- 
				Ты пишешь код для поиска чисто красных цифр N размера определённого шрифта для Paint и скинул картинку в jpg. Я сомневаюсь в правильности твоего выбора без использования цветокоррекции и последующем нахождении где-то ещё, кроме Paint
 Думаю здесь есть место для этого сообщения http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571
- 
				До меня допёрло, у тебя GETSCREEN вне цикла. Помести его перед IF_PICTURE_IN
			
- 
				До меня допёрло, у тебя GETSCREEN вне цикла. Помести его перед IF_PICTURE_IN
 
 Зачем? Никаких изменений нет. Действий не производится.
- 
				Ну как это можно проверить без набора твоих картинок-цифр и картинки на которой нужно искать эти цифры?
 Сложи все это в Zip архив и прикрепи к сообщению.
 Скриншот на котором нужно искать цифры должен быть в BMP или PNG формате.
 
 
 Ну, вроде, сделал. Держите)
- 
				Ты пишешь код для поиска чисто красных цифр N размера определённого шрифта для Paint и скинул картинку в jpg. Я сомневаюсь в правильности твоего выбора без использования цветокоррекции и последующем нахождении где-то ещё, кроме Paint
 Думаю здесь есть место для этого сообщения http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571
 
 
 Я вообще не понял твоего сообщения. Имеешь в виду, что я ищу цифры на "шакальной" джепегешной картинке? Нет, та картинка, на которой я ищу цифры, она PNG, так что там нет никаких искажений. Если бы были проблемы с качеством картинки, то у меня бы просто ничего не находилось.
 Скрин в jpg потому что изначально я кидал его в обсуждение ВК, а после скачал из ВК и залил сюда.
- 
				Да действительно находит и 2 и 1. Похоже что в версии 4.12 область анализа захватывает некоторое пространство правее сверх введенных координат.
 
 В версии 4.13 этого уже нет.
 
 Скачай последнюю бета версию.
 
 Полная сборка 4.13.005b
 http://crapware.aidf.org/forum/index.php?topic=356.msg24549#msg24549 (http://crapware.aidf.org/forum/index.php?topic=356.msg24549#msg24549)
 
 Обновленный Clickermann.exe 4.13.007b скачай его и замени им файл в полной сборке.
 http://crapware.aidf.org/forum/index.php?topic=356.msg24993#msg24993 (http://crapware.aidf.org/forum/index.php?topic=356.msg24993#msg24993)
- 
				4.12 это как Windows Vista
 :) :D
 
 4.11 соответственно XP
 4.13 надеюсь 7-ка
 
 Сижу на 4.11 в прямом и переносном (на работе XP)
 4.13 пока только для опытов
- 
				Да действительно находит и 2 и 1. Похоже что в версии 4.12 область анализа захватывает некоторое пространство правее сверх введенных координат.
 
 
 
 тоже потестировал с поиском. как оказалось, это "некоторое пространство" равно ширине искомой картинки. и искомые картинки находит не только правее области, но и ниже на высоту той же искомой картинки.
 получается, что если верхний левый пиксель искомой картинки находится в искомой области, то ее найдет в этой области независимо от ее размера , и не зависимо от того, помещается она в этой области или нет.
 
 вот на такой картинке (https://i.imgur.com/ozSxqMR.png), при поиске в области которая захватывает цифру "2",  найдет все цифры. а чтобы найти только цифру "2", достаточно указать область поиска в один пиксель (верхний левый двойки).
 
 странно, что ранее никто этого не замечал  :-\ . в тринадцатой версии вроде исправлено.
- 
				тоже потестировал с поиском...
 
 
 Классно проанализировали и всё расписали *большой палец вверх* 8)
 
 странно, что ранее никто этого не замечал
 
 
 Ай да я, ай молодец  ;D
- 
				Скачай последнюю бета версию...
 
 Спасибо, попробую. Надеюсь, больше такого не будет :)
 Если вдруг что - ещё напишу.
- 
				странно, что ранее никто этого не замечал
 Ай да я, ай молодец  ;D
 
 
 Мало кто пользуется 4.12
 Вообще заметили, не знаю она это или другая. Была тема, что на некоторых версиях не учитывался размер искомой картинки. По идее область нужно проверять при 100% и уменьшать на размер картинки.
 Или для всех %, универсальный: пикселы которые вылезли подсчитывать как не совпавшие.
- 
				Согласен с автором темы.Столкнулся с точно такой ситуацией.
 Фон разноцветный,картинка поиска -  разный текст одного цвета
 IF_PICTURE_IN (510,242, 1081,677, "A.bmp",255,10)
 ELSE
 IF_PICTURE_IN (510,242, 1081,677, "B.bmp",255,10)
 ELSE
 IF_PICTURE_IN (510,242, 1081,677, "C.bmp",255,10)
 
 При прогоне такого условия:
 1.Картинку "В" находит всегда в одних и тех же координатах если её реально нет,при появлении кликает в двух местах,с остальными картинками проблем нет
 2. поиск 10% совпадения- не бред,а жизненная необходимость (clormod не помогает ) и он реально работает
 3.Прогон всех трёх условии занимает 3-4 секунды т.е  сканирование одного условия занимает 1-2 секунды
 
 В моём случае если поставить 60-100%% совпадения - скорость сканирования возрастает в разы,но перестанет находить искомое.
 
 P.S  На счет ложного срабатывания я так понял уже ведётся работа,но если еще и оптимизируете скорость скана при 10% совпадении - я буду просто счастлив  и не только я ))
 3.
 
- 
				Милочка! При 10 % совпадения, программа может найти портрет Иосифа Виссарио́новича Сталина, на изобажении Российского флага!
 А не ваши букавки с одинаковым цветом и фоном, вы хоть думайте немного, прежде чем на всё соглашаться!
 
 
 Нет вы неправы дорогуша. Ищет то что нужно просто очень долго ))
- 
				Конечно долго, иначе как процент сверить. И чем он меньше, тем больше холостых проверок на каждый пиксел области.
 
 Только уменьшать область и заготовку. Какие размеры сейчас?
 
- 
				Кто то там говорил про то, что Сталин на флаге РФ есть. Так вот, я проверил, и действительно он там есть  :o . И даже не при 10%, а при 25% !!!!
 
 
 (https://i.imgur.com/5w7m045.png)
 
 Не верите? Можете проверить.
 
 GETSCREEN
 IF_PICTURE_IN (0,0, $_xmax,$_ymax, "stalin.bmp", -1, 25)
 print("Сталин найден на флаге РФ в координатах - ",$_return1,"x", $_return2)
 else
 print("Нету Сталина :(")
 END_IF
 halt
 Искомая картинка во вложении.
 
 
 
 
- 
				Vint :размер картинки 0.56 на 0.34 см ,область сканирования "510,242, 1081,677" (http://)
 
 dramster : не исключая фона ты на ней и фигу сможешь найти ))
- 
				Vint :размер картинки 0.56 на 0.34 см ,область сканирования "510,242, 1081,677" (http://)
 
 dramster : не исключая фона ты на ней и фигу сможешь найти ))
 
 
 0.56 на 0.34 см  :D - линейкой мерял?
 
 кстати и на твоей картинке фона исключения нету.
 
 а вообще, согласен, что такого типа картинки очень сложно найти, где буквы сливаются с фоном и постоянно сглаживаются, хз как у тебя там находит их. или там фон статичен?
 
 
- 
				х.з чем паинт меряет ,но там в настройках свойства - можно и в сантиметрах выставить.фон - морская гладь на паузе,colormod не справляется т.к при увеличении цветокоррекций появляются белые квадратики и они не всегда совпадают с картинкой т.к она движется.мне в моём случае фон ненужно исключать ,при 10% скане картинка ищется идеально ,пропусков не было
			
- 
				х.з чем паинт меряет ,но там в настройках свойства - можно и в сантиметрах выставить.фон - морская гладь на паузе,colormod не справляется т.к при увеличении цветокоррекций появляются белые квадратики и они не всегда совпадают с картинкой т.к она движется.мне в моём случае фон ненужно исключать ,при 10% скане картинка ищется идеально ,пропусков не было
 
 
 находит, это хорошо. но 10% это очень долго. совет для ускорения:
 скорее всего пикселы твоего фона врядли совпадут при поиске, они с каждым фреймом разные. а вот эти самые светлые, которые на верхушках букв возможно и статичны, какраз посчитал их - гдето 26-28 штук, а 10% от твоей заготовки, это 26 пикселей.
 есть 2 выхода. первый - это закрасить все темные пиксели игнорируемым цветом, и дальше проверять процент от 70 до 90%. второй - это применить минимальную цветокоррекцию, чтобы все темные пиксели стали одним цветом, и опятьже процент увеличивать до 70-90%. колормод 3-4 вполне приравнивает все цвета фона в один.
 
 2. поиск 10% совпадения- не бред,а жизненная необходимость (clormod не помогает ) и он реально работает
 
 
 что значит не помогает? тоесть не находит вообще? есть подозрения, что не верно используется колормод. я надеюсь искомую заготовку сохранял в томже колормоде, что и использовался при поиске? увеличение уровня цветокоррекции может привести лишь к тому, что картинку начнет находить в неположенном месте.
 
 и еще, скинь скрин своей искомой области в момент присутствия искомой картинки. я бы поэкспериментировал с коррекцией и процентом.
- 
				вот скрин
			
- 
				вот второй скрин
			
- 
				И что здесь "clormod не помогает"?
 
 COLORMODE 8 - даёт идеальное отделение.
 "Moby Dick" между скринами отличается в 1 (один!) пиксель.
 "Trancus" не отличается совсем. Т.е. 100%.
 Можно накинуть чуток %, если существует возможность наложения имени на другую рыбу.
- 
				В игре не помогает ,все параметры colormod пробовал.Идеально ищет только ту картинку с которой сделан скри - другие игнорит
			
- 
				Плевать.С 10% работает идеально,сканю 2 картинки одновременно, с задачей справляется без нарекании.Если автор в следующем релизе оптимизирует скорость скано то будет хорошо,нет - и так сойдет ))
			
- 
				Если автор в следующем релизе оптимизирует скорость скано то будет хорошо,нет - и так сойдет ))
 
 да тут скорость скана итак мегакосмос!!! главное правильно его использовать. никому и в голову не приходило искать чтолибо на экране с 10% точностью.  как минимум 60-70%. если процент меньше, то, во первых - возможны ложные находки, как со сталином на флаге, во вторых - значительно увеличивает время поиска, в третьих - излишне нагружается цп. насчет "возможны ложные находки", это тебе везет, что водичка вся синяя, а рыбки серые. вот тебе и везет, что твои 10% пикселей больше нигде и нету. в основном в играх все цвета радуги, и разбросаны по всему экрану.
 
 до тебя все хотят донести, что ты используешь колормод не правильно!!! а ты все равно стоишь на своих 10% в несколько секунд. при правильном подходе скорость поиска увеличится как минимум раз в 100, и плюс к этому проц не так будет загружен.
 
 как писал Vint выше - COLORMODE 8 - даёт идеальное отделение. если так, то при поиске с COLORMODE 8, тебе потребуется заскринить исомую картинку в томже уровне цветокоррекции.
 
 то есть берем вот такой код
 
 // Получение скриншота с цветокоррекцией (фильтр 8)
 GETSCREEN
 COLORMODE(8)
 SCREENSHOT
 HALT
 запускаем. открываем сохраненный скрин паинтом (скрин в папке screens в папке с прогай, либо в папке с сохраненным кодом). вырезаем нужное имя рыбы, при COLORMODE 8 желательно захватить не 2-3 буквы, а все 6-8, чтоб наверняка. сохраняем этот фрагмент (естественно в BMP 24bit).
 
 все, теперь можем обработанную картинку искать с использованием цветокоррекции.
 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  чем то не угодит, мало ли, то можешь поэкспериментировать таким же методом с другими уровнями коррекции.
 
- 
				
 если вдруг COLORMODE 8  чем то не угодит, мало ли, то можешь поэкспериментировать таким же методом с другими уровнями коррекции.
 
 
 Спасибо мил человек за разжёванный ответ,но это я всё проделывал .COLORMODE выставлял от 8 до 1 ,картинка искалась мгновенно,но толька та с которой был сделан скрин,другие аналогичные картинки тупо игнорировались (наверное в игре стоит какая то защита).на скринах с разными ракурсами может и будет работать (не пробовал) ,но в самой игре этот метод не помогает.Единственный оптимальный вариант для меня ( хоть он и выглядит дико ) это IF_PICTURE_IN (0,0, $_xmax,$_ymax, "имя сохраненной заготовки с цветокоррекцией.bmp", -1, 10) хоть скан и происходит раз в 1 секунду.Что бы вы не говорили но ЭТО работает и удовлетворяет все условия кроме скорости.Самое главное ложных срабатывании нет и нет пропуска искомой картинки.Тест 60ч без перерыва - полёт нормальный
- 
				вот на такой картинке (https://i.imgur.com/ozSxqMR.png), при поиске в области которая захватывает цифру "2",  найдет все цифры. а чтобы найти только цифру "2", достаточно указать область поиска в один пиксель (верхний левый двойки).
 
 
 Чуваак, как ты вечно умудряешься находить все эти редкие закономерности?))  :o