|
|
|
Исключение изображения |
|
|
Capucci |
7.3.2019, 20:10
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Приветствую!
Имеется скрипт по поиску изображений с помощью функции findimage. Скрипт ищет 15 различных изображений, 5 из них имеют отличительные особенности, которые находятся скриптом в других изображениях не из скрипта, поэтому они попадают в результаты, а хотелось бы в исключения. Процент совпадения менять нельзя, т.к. произойдёт сбой на других изображениях из скрипта. Пытался некоторыми способами сделать исключение, но выходит так, что если скрипт видит изображение-исключение, то на него внимание не обращает и начинает скрипт работать заново, но здесь происходит зацикливание - скрипт будет искать постоянно это изображение-исключение и видеть только его, пока оно не пропадёт или не появится изображение, которое в списке скрипта находится хотя бы на одну строчку выше изображения-исключения.
Что хочу сказать и спросить: есть простой скрипт по поиску изображений (findimage), который логически ищет изображения и добавляет в результат. А есть ли такой же простой способ добавить найденное изображение в исключение, который не будет препятствовать поиску нужных изображений?
|
|
|
|
Capucci |
7.3.2019, 21:22
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 7.3.2019, 21:17) Без картинок трудно что-то сказать.
Параметр можно задать переменной, для каждой картинки свой процент. Но этот варинат на крайний случай.
Да, можно, но всё равно при нахождении картинки-исключения скрипт будет зацикливаться на ней и не будет искать другие, пока это изображение не пропадёт. Но за наводку спасибо - решил ею другую проблему)
|
|
|
|
Capucci |
8.3.2019, 23:22
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Всё же нашёл решение, чтобы скрипт делал исключение картинок, которые нужно пропускать. Довольно всё вышло просто: Код set #startX 110 set #startY 240 set #endX 1238 set #endY 723 set $path "C:\Program Files\Image\" // путь к картинкам
set %image [1] Brown // Нужная картинка set %image [2] Red // Нужная картинка set %image [3] Blue // Нужная картинка set %image [4] Orange // Нужная картинка set %image [5] Purple // Нужная картинка set %image2 [6] Black // Исключение set %image2 [7] White // Исключение
set #size size(%image)
for #i 1 #size 1 // цикл для поиска картинок set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 95) set #b findimage (#startX #startY #endX #endY ($path%image2[#i].bmp) %arr 2 101) if #a > 0 or #b > 0 goto metka end_if end_for
Необходимо картинки-исключения занести в отдельную категорию (image2) и в цикле для поиска картинок дать этой категории совпадение в 101% и в этом случае картинка никогда не найдётся и будет добавлена, так сказать, в исключение. Благо % не заканчивается на 100 :-)
|
|
|
|
Capucci |
9.3.2019, 0:02
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 0:34) Зачем искать то что никогда не найдётся? Не говоря уже что size(%image) равно 5, а картинки-исключения записаны в 6 и 7 элементы. Т. е. вообще не ищутся, потому что цикл заканчивается на 5.
К примеру, у нас имеется в поиске картинка Brown, но иногда скрипт путает Brown с Black, а чтобы искался только Brown нужно добавить Black в исключение или повысить % совпадения у Brown, но этого сделать нельзя, поскольку % стоит и так на самом большом значении - 95, если выше, то Brown искаться не будет, поэтому картинку Black добавляем в отдельную категорию и ставим % совпадения 101. В связи с тем, что более 100% совпадения не может быть в принципе, то выходит, что картинка имеющая 101% совпадения добавляется в список, который никогда не найдётся. Другими словами, скрипт видит картинку Black, но он не добавляет её в результаты, т.к. нет совпадения в 101%. Цитата size(%image) равно 5, а картинки-исключения записаны в 6 и 7 элементы. Т. е. вообще не ищутся, потому что цикл заканчивается на 5. Насчёт этого: не знаю почему, но у меня всё работает хорошо и так)) Т.е. работает как категория image, так и категория image2.
|
|
|
|
Capucci |
9.3.2019, 0:42
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 1:13) Код set %image [1] Brown // Нужная картинка set %image [2] Red // Нужная картинка set %image [3] Blue // Нужная картинка set %image [4] Orange // Нужная картинка set %image [5] Purple // Нужная картинка set %image2 [6] Black // Исключение set %image2 [7] White // Исключение
set #size size(%image)
log clear log mode compact for #i 1 #size 1 log #i log %image[#i] log %image2[#i] // и что тут может работать? Black и White не будут искаться end_for end_script
(IMG:https://b.radikal.ru/b17/1903/fe/28dc5e8bb15d.png) Вот так вот ищет)
|
|
|
|
Capucci |
9.3.2019, 1:10
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 1:57) Если Код set %image2 [1] Black // Исключение set %image2 [2] White // Исключение то в логе будут Black и White А так нет: Код set %image2 [6] Black // Исключение set %image2 [7] White // Исключение Верно. Сейчас потестил, выходит что если Brown и Black объединены, то не ищутся оба и выдаёт ошибку в координатах, т.е. создаётся конфликт. Но, если запускать скрипт только с одной категорией (где исключение) с совпадением 101%, то всё работает. Единственная загвоздка - это объединить две категории в одном скрипте. Есть идеи?
|
|
|
|
Capucci |
9.3.2019, 1:23
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 2:17) Этот код изначально ошибочный. Опишите нужно искать, а что нет.
Код set %image [1] Brown // 95% set %image [2] Red // 95% set %image [3] Blue // 95% set %image [4] Orange // 95% set %image [5] Purple // 95% set %image2 [6] Black // 98% set %image2 [7] White // 98%
Пусть будет пока совпадение до 100%. Есть две категории % совпадения. Необходимо, чтобы поиск этих категорий происходил из одного скрипта.
|
|
|
|
Capucci |
9.3.2019, 2:07
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 2:37) Код init_arr %image Brown Red Blue Orange Purple Black White init_arr %accuracy 95 95 95 95 95 98 98
set #size size(%image)
log clear log mode compact for #i 1 #size 1 log %image[#i] %accuracy[#i] end_for end_script Протестировал - два разных % совпадения ищутся правильно и живут в гармонии. % выше 100 в данном скрипте не работает, хоть 1000 ставь, всё равно картинка ищется. Благодарю за помощь! Тем не менее, в изначальном скрипте с сайта, 101% работает, но исключительно с одной категорией, т.е. все картинки находящиеся в этой категории искаться не будут. Этот превосходящий 100 % пилот видит, значит по идее должно работать и в другом месте. Можно ли всё-таки его в теории припахать как-то в новый скрипт?
|
|
|
|
Capucci |
9.3.2019, 2:29
|
Neophyte
Сообщений: 25
Регистрация: 5.3.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.253
|
Цитата(cirus @ 9.3.2019, 3:20) Смысл 101%? Это тоже самое что вообще не искать картинку. В кармане лежит 100 рублей, вы пытаетесь найти 101 рубль. Так зачем искать то, что не найти?
Попробуйте протестировать этот 101% на одной картинке. Оставив совпадение по умолчанию - искаться соответственно будет, поставим 101% - картинку пилот не видит, хотя она в списке есть. Я меняю только %, больше ничего не трогаю. Ведь картинка из скрипта никуда не удаляется, ничего с ней не делается, меняется только один параметр - совпадение. С одним % она находится, с другим - нет. Вот в этом смысл. Я понимаю, что здесь не до конца может быть логично, но у меня это работает так. Просто попробуйте, и если что-то будет работать не так, как говорю я, то значит я действительно ошибаюсь (IMG: style_emoticons/default/blink.gif)
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|