День добрый, у меня возникла проблема при написании бота для Rasing cities.
При малом масштабе всеработает отлично, а при большом цвета пикселей слегка меняются и функция не находит картинки. Самое простое на мой взгляд решение добавить параметр диапазона цвета пикселя. Например 1000 т.е. +-1000 от оригинала. Я даже сам готов решить эту проблему но мне нужен кусок исходного кода этой функции.
PS прикрепил образцы картинок для поиска.
1. Mortimor - 21 Июня, 2013 - 01:54:53 - перейти к сообщению
2. Kibor - 22 Июня, 2013 - 04:07:53 - перейти к сообщению
Mortimor пишет:
добавить параметр диапазона цвета пикселя
Это повлияет на скорость этой функции. Поскольку ведется работа с изображением, то лучше строить скрипт под конкретный размер игры.
В принципе можно добавить такой параметр, но это все равно не надежно будет.
Сейчас нет времени заниматься программой. Учитываю все пожелания и возможно реализую когда будет свободное время.
3. ionich123 - 19 Июля, 2013 - 05:48:42 - перейти к сообщению
В другом кликере для работы с картинками использовались команды getscreen (копировал в буфер обмена скрин активного окна) и после команда colormode(0...7) которая безвозвратно упрощала картинку, уменьшая кол-во цветов в зав-ти от параметра.
Так же в кликере был переключатель, чтобы видеть изображение в соответствии с режимом 0-7.
это облегчало поиск картинки, сейчас я написал скрипт для поиска буквы "Р" в названии ярлыков на рабочем столе, находит иногда все, иногда почти ничего( в зав-ти от того, куда их двигаю) - только когда юзанул пробирку по определению цвета понял, что оказывается они разные немного в разных местах экрана.
Так же в кликере был переключатель, чтобы видеть изображение в соответствии с режимом 0-7.
это облегчало поиск картинки, сейчас я написал скрипт для поиска буквы "Р" в названии ярлыков на рабочем столе, находит иногда все, иногда почти ничего( в зав-ти от того, куда их двигаю) - только когда юзанул пробирку по определению цвета понял, что оказывается они разные немного в разных местах экрана.
4. Kibor - 19 Июля, 2013 - 12:07:33 - перейти к сообщению
Да я сделаю. Просто сейчас нет толком возможности и желания даже исходник открывать.
5. Kibor - 21 Июля, 2013 - 16:36:12 - перейти к сообщению
Реализовал поиск изображений учитывая разброс цветов по RGB и поиск по видимой части изображения. Подробнее :Реализация поиска изображения по неполному совпадению
6. lavpochta - 20 Октября, 2021 - 20:57:49 - перейти к сообщению
Здравствуйте, правильно я понимаю:
1 что разбежность цветов при работе findimage применяется к каждому пикселю исходного изображения, которое ищется на экране?
2 А после этого уже высчитывается процент совпадения, если он задан меньше 100%? Или findimage доходя до нужного % обрывает поиск по п.1?
1 что разбежность цветов при работе findimage применяется к каждому пикселю исходного изображения, которое ищется на экране?
2 А после этого уже высчитывается процент совпадения, если он задан меньше 100%? Или findimage доходя до нужного % обрывает поиск по п.1?
7. Kibor - 20 Октября, 2021 - 22:14:38 - перейти к сообщению
lavpochta ,
Когда процент не уложившихся доходит до указанного (не учитывая не совпадения которые в фоновом цвете) обрывается.
Процент не совпадения = 100 - указанный процент.
Пикселя которые уложились в диапазон разбежности считаются совпавшими и в процент не входят.
Когда процент не уложившихся доходит до указанного (не учитывая не совпадения которые в фоновом цвете) обрывается.
Процент не совпадения = 100 - указанный процент.
Пикселя которые уложились в диапазон разбежности считаются совпавшими и в процент не входят.
8. lavpochta - 26 Октября, 2021 - 18:08:08 - перейти к сообщению
Вопрос еще можно?:
1 То есть эталонное изображение (например 5 пикселей) сравнивается с такой же зоной по размерам на экране (разбежность=0 и фоновый цвет=-1 пока не учитываю в рассуждении). Каждый пиксель эталонного изображения (1-й, 2-й, 3-й...) сравнивается с соответствующим пикселем зоны (1-й, 2-й, 3-й...). Допустим 2 пикселя задано как "процент не совпадения". Если 1-й эталона=1-му зоны, 2-й эталона = 2-му зоны, 3-й эталона=3-му зоны, а 4-й эталона<>4-му зоны, и 5-й эталона<>5-му зоны - то изображение найдено я так понял?
2 Если в данном случае допустим 3-й эталона тоже <> 3-му зоны, то процент несовпадения превыщается и зона следующего поиска смещается вправо? То есть бывший 2-й пиксель зоны, теперь становится 1-м пикселем зоны для очередного поиска?
Я это спрашиваю к тому, что довольно странно, что на экране нет и близко похожего изображения к эталону, а функция findimage при 35%(процентах) НЕ совпадения мне сообщает, что изображение обнаружено. Или в ней не такой принцип заложен перебора пикселей эталонного изображения, когда картинка по высоте больше 1-го пикселя?
Хотя возможно, что фон эталонной картинки при фоновом цвете=-1 имеет в картинке как раз менее 35% НЕ совпадения с зоной поиска? Поэтому и произошло "ложное" обнаружение?
(Добавление)
То есть даже введение фонового цвета <>-1 при указании большого "процента НЕ совпадения" (так как хочется, чтобы эталонная картинка при "плохом" качестве все
равно распозналась) не поможет, так как произойдет "инверсия", и оставшиеся "мусорные" пиксели станут основными для критерия поиска по "процент НЕ совпадения".
И все равно будут ложные срабатывания даже с фоновым цветом.
Может стоит какие-то рекомендации дать в описании функции findimage по параметру "процент совпадения", чтобы люди не увлекались им и не ломали голову,
почему картинка на экране неправильно распознается?
(Добавление)
А если по непониманию еще добавить "разбежность оттенков (цветов)", то есть фактически "помножить" на несколько раз "процент НЕ совпадения" для оставшегося
фонового цвета в эталонной картинке, то вообще неизвестно чего будет и когда находится...
1 То есть эталонное изображение (например 5 пикселей) сравнивается с такой же зоной по размерам на экране (разбежность=0 и фоновый цвет=-1 пока не учитываю в рассуждении). Каждый пиксель эталонного изображения (1-й, 2-й, 3-й...) сравнивается с соответствующим пикселем зоны (1-й, 2-й, 3-й...). Допустим 2 пикселя задано как "процент не совпадения". Если 1-й эталона=1-му зоны, 2-й эталона = 2-му зоны, 3-й эталона=3-му зоны, а 4-й эталона<>4-му зоны, и 5-й эталона<>5-му зоны - то изображение найдено я так понял?
2 Если в данном случае допустим 3-й эталона тоже <> 3-му зоны, то процент несовпадения превыщается и зона следующего поиска смещается вправо? То есть бывший 2-й пиксель зоны, теперь становится 1-м пикселем зоны для очередного поиска?
Я это спрашиваю к тому, что довольно странно, что на экране нет и близко похожего изображения к эталону, а функция findimage при 35%(процентах) НЕ совпадения мне сообщает, что изображение обнаружено. Или в ней не такой принцип заложен перебора пикселей эталонного изображения, когда картинка по высоте больше 1-го пикселя?
Хотя возможно, что фон эталонной картинки при фоновом цвете=-1 имеет в картинке как раз менее 35% НЕ совпадения с зоной поиска? Поэтому и произошло "ложное" обнаружение?
(Добавление)
То есть даже введение фонового цвета <>-1 при указании большого "процента НЕ совпадения" (так как хочется, чтобы эталонная картинка при "плохом" качестве все
равно распозналась) не поможет, так как произойдет "инверсия", и оставшиеся "мусорные" пиксели станут основными для критерия поиска по "процент НЕ совпадения".
И все равно будут ложные срабатывания даже с фоновым цветом.
Может стоит какие-то рекомендации дать в описании функции findimage по параметру "процент совпадения", чтобы люди не увлекались им и не ломали голову,
почему картинка на экране неправильно распознается?
(Добавление)
А если по непониманию еще добавить "разбежность оттенков (цветов)", то есть фактически "помножить" на несколько раз "процент НЕ совпадения" для оставшегося
фонового цвета в эталонной картинке, то вообще неизвестно чего будет и когда находится...