|
|
  |
Поиск числа с помощью Findimage, Готовый скрипт |
|
|
| portos |
31.3.2025, 23:01
|

   
Apprentice
Сообщений: 195
Регистрация: 6.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.157

|
Цитата(DarkMaster @ 31.3.2025, 20:47)  чет я вообще ничего не понимаю. А причем тут вообще распознавание текста? Из того, что я вижу вам нужно делать поиск шести изображений, пока каких-то не найдет два. Как вы хотите сюда прикрутить текущие скрипты по распозавания?
скрипт
// Поиск числа с помощью FindImage init_arr %GetImage (1) 588, 148 806, 266 // координаты для поиска, StartX StartY EndX EndY
set linedelay 0 init_arr %picture 1 2 3 4 5 6 // имена картинок (0.bmp, 1.bmp и т. д.) init_arr %symbol 1 2 3 4 5 6 // символ соответствующий имени, т. е. картинка 0.bmp соответствует 0 set $path "D:\uopilot\00" // папка с картинками set $bmp "*.bmp*" // формат картинок set #deltaY 8 // расстояние между строками (можно указать высоту картинок) set #deltaspace 12 // допустимое расстояние между цифрами, иначе будет считаться что это не одно число set #accuracy 90 // точность поиска для Findimage set #deviation 3 // погрешность оттенка для Findimage set #wait 2 // пауза между поиском картинок, если указать меньше искать будет быстрее, но нагрузит процессор set #timeproc 2000 // время (в мсек) для поиска картинок, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 картинка set #repeatimage 2 // допустимое смещение координат, если используется несколько видов одной картинки
dir (%path $path $bmp) set delimiter ' ' while 1 = 1 set size(%result) // уничтожить массив с предыдущими результатами set size(%coord) // уничтожить массив с предыдущими координатами call test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage // процедура поиска // save_array %result C:\Users\abc\Desktop\result111.txt // массив с результатами поиска // save_array %coord C:\Users\abc\Desktop\coord111.txt // массив с координатами чисел if size(%result) > 0 // если размер массива больше 0 // ТУТ НУЖНЫЕ ДЕЙСТВИЯ msg %result ///////////// для примера вывод в hint того что нашлось (можно убрать) set $str set %z [1] \n for #i 1 size(%result) set $str $str%result[#i] if #i != size(%result) set $str $str%z [1] end_if end_for hint (14 clBlue 409, 265 ($str))
set $a 0 while $a < 1 set $a findimage (409, 200 831, 438 (D:\uopilot\00\%result[1 1].bmp) %crds 2) // картинку которую надо найти end_while if $a > 0 // если найдена set #x %crds [1 1] set #y %crds [1 2]
wait 200 + random (500) kleft #x #y wait 100 + random (300) end_if
///////////// else hint Картинки не найдены end_if end_while
// процедура поиска и сортировки proc test %picture %symbol %GetImage %path #deltaY #deltaspace #accuracy #deviation #wait #timeproc #repeatimage set #GetStartX %GetImage [1 1] set #GetStartY %GetImage [1 2] set #GetEndX %GetImage [1 3] set #GetEndY %GetImage [1 4] set #current_script current_script // загрузка картинок в память if size(%path) > 0 // если картинки найдены for #i 1 size(%path) for #j 1 size(%picture) if %path [#i 3] = %picture [#j] set #n #n + 1 set %image [#n] LoadImage(%path [#i 1]) set %number [#n] %symbol [#j] break end_if end_for end_for else log Картинки в: $path не найдены log Скрипт остановлен stop_script #current_script end_if // поиск картинок и их сортировка set size(%result1) set size(%coord_tmp) while size(%result1) = 0 and (#timeproc > timer or #timeproc = 0) set #z 0 set %get GetImage(#GetStartX #GetStartY #GetEndX #GetEndY) // сохранить часть экрана в память set #v %get [1 1] for #i 1 size(%number) set #a Findimage(0 0 %get [1 2] %get [1 3] (%image[#i 1]) %a #v #accuracy -1 #deviation) // поиск if #a < 0 log Ошибка поиска картинки. Код ошибки: #a log Скрипт остановлен stop_script #current_script end_if if #a > 0 for #j 1 size(%a) set #z #z + 1 init_arr %result1 (1 1 #z) %number[#i] %a[#j 1] %a[#j 2] // запись результатов поиска в массив end_for end_if wait #wait end_for if size(%result1) > 0 gosub sortY // сортировка по Y и X end_if set $b DeleteImage(%get[1 1]) // удалить изображение, полученное GetImage end_while goto end // выйти из процедуры
:sortY ///// удаление повторных координат, если используется несколько видов одной картинки set #size 0 set %tmp %result1 set size(%result1) for #i 1 size(%tmp[1]) set #break 0 for #n 1 #size set #xrepeat %tmp[2 #i] - %result1[2 #n] set #yrepeat %tmp[3 #i] - %result1[3 #n] if abs(#xrepeat) <= #repeatimage and abs(#yrepeat) <= #repeatimage set #break 1 break end_if end_for if #break = 0 set #size #size + 1 init_arr %result1 (1 1 #size) %tmp [1 #i] %tmp [2 #i] %tmp [3 #i] end_if end_for ///////
set #z 0 set #z1 0 set #z2 1 set #z4 0 sort_array %result1 -3 while 1 = 1 set #z 0 set size(%tmp) for #i #z2 eval(size(%result1 [1]) - 1) set #j #i + 1 set #x %result1 [3 #i] - %result1 [3 #j] if abs(#x) < #deltaY set #z #z + 1 init_arr %tmp (1 1 #z) %result1 [1 #i] %result1 [2 #i] %result1 [3 #i] else set #z #z + 1 init_arr %tmp (1 1 #z) %result1 [1 #i] %result1 [2 #i] %result1 [3 #i] break end_if end_for set #z2 #z2 + #z if #z2 = size(%result1[]) set #x %result1 [3 #i] - %result1 [3 #j] if abs(#x) > #deltaY set #jj #j sort_array %tmp -2 set #z1 #z1 + 1 init_arr %result (#z1) %tmp [1] set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1] set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z] gosub space set size(%tmp) set #z #z + 1 init_arr %tmp (1 1 #z) %result1 [1 #jj] %result1 [2 #jj] %result1 [3 #jj] set #z1 #z1 + 1 set %result.#current_script [#z1] %tmp [1] set %coord.#current_script [#z1] %tmp [2 #z], %tmp [3 #z] gosub end end_if set #z #z + 1 init_arr %tmp (1 1 #z) %result1 [1 #j] %result1 [2 #j] %result1 [3 #j] sort_array %tmp -2 set #z1 #z1 + 1 init_arr %result (#z1) %tmp [1] set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1] gosub space break else sort_array %tmp -2 set #z1 #z1 + 1 init_arr %result (#z1) %tmp [1] set %coord_tmp [#z1] %tmp [2 1], %tmp [3 1] gosub space end_if end_while return
:space set #z3 0 set size(%space) set #z4 #z4 + 1 //посчитать где нужны пробелы for #i 1 eval(size(%tmp[]) - 1) set #j #i + 1 set #space %tmp [2 #i] - %tmp [2 #j] if abs(#space) > #deltaspace set #z3 #z3 + 1 set %space[#z3] #j set #size_coord 1 while %coord_tmp[#z1 #size_coord] != "" set #size_coord #size_coord + 1 end_while set %coord_tmp [#z1 #size_coord] %tmp [2 #j], %tmp [3 #j] end_if end_for // вставить пробелы for #i 1 size(%space) set $str %result [#z4] set $str insert(" " $str %space[#i]) set #j #i + 1 set %space[#j] %space[#j] + #i set %result [#z4] $str end_for // сохранение массива в основном скрипте for #i 1 size(%result) set size(%tmp1) init_arr %tmp1 (1) %result [#i] for #j 1 size(%tmp1[1]) set %result.#current_script [#i #j] %tmp1 [1 #j] set %coord.#current_script [#i #j] %coord_tmp [#i #j] end_for end_for return
:end end_proc
я же спросил сразу про картинки
|
|
|
|
|
|
| PilotMidleBeginner |
29.10.2025, 16:46
|
 
Neophyte
Сообщений: 11
Регистрация: 12.10.2024 Группа: Пользователи Наличность: 0
Пользователь №: 20.843
Возраст: 26

|
Цитата(DarkMaster @ 29.10.2025, 1:12)  так просто проверяйте цвет полоски и все. числа не нужны.
это слишком просто (IMG: style_emoticons/default/unsure.gif) просто хотел расширить пул доступных мне команд
|
|
|
|
|
|
| halomy |
27.11.2025, 12:38
|

Registred
Сообщений: 4
Регистрация: 27.11.2025 Группа: Пользователи Наличность: 0
Пользователь №: 21.037
Возраст: 30

|
Цитата(Skylos @ 21.8.2023, 3:37)  Скачал разные версии Версия 2.42 (15.05.2021) Также пробовал 2.40 и 2.41 и Nightversion Все одинакаво
А вот скачал 2.40 b010 И все нормально отрабатывать стала, спасибо.
а есть ссылка на данную версию? столкнулся с такой же проблемой.
|
|
|
|
|
|
| nykep |
27.11.2025, 13:08
|
   
Apprentice
Сообщений: 267
Регистрация: 1.9.2012 Группа: Пользователи Наличность: 2046
Пользователь №: 15.246
Возраст: 25

|
|
|
|
|
|
|
|
  |
1127 чел. читают эту тему (гостей: 1127, скрытых пользователей: 0)
Пользователей: 0
|
|