Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Поиск сразу несколько картинок, Поиск сразу несколько картинок
gt500rx
сообщение 31.1.2021, 17:21
Сообщение #1


*

Registred
Сообщений: 9
Регистрация: 22.11.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.458
Возраст: 31



Помогите разобраться, как можно написать скрипт чтобы UoPilot искал сразу много картинок( штук 10) и выполнял действие при нахождении хотя бы одной?

В описании оператора Findimage написан примерный скрипт, но он ищет только одну указанную картинку в цикле (for #i 1 #size 1)- ищет только "картинка 1"

// Пример 5
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $path "C:\Program Files\UOPilot\images\" // путь к картинкам
set %image [1] картинка1 // имя изображения
set %image [2] картинка2 // имя второго изображения
set %image [3] картинка3 // третьего
set %image [4] картинка4 // имена могут быть любыми

set #size size(%image) // всего картинок
hint Всего картинок #size

:metka
for #i 1 #size 1 // цикл для поиска картинок
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
if #a > 0
move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку
wait 500 // ждать 0,5 секунды
end_if
end_for
wait 3000 // ждать 3 секунды
goto metka
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2021, 18:03
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
ищет только "картинка 1"

Не ищет и не находит не одно и тоже.
Добавьте вывод результата поиска в лог, после set #a findimage
Код
log #i    #a

Что в логе?
Цитата
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)

Можно добавить отклонение в цвете или уменьшить точность поиска.
Код
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 70 1 5)


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gt500rx
сообщение 31.1.2021, 19:54
Сообщение #3


*

Registred
Сообщений: 9
Регистрация: 22.11.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.458
Возраст: 31



for #i 1 #size 1 так ищет и находит картинка1 и перемещает курсор на нее
если изменить на
for #i 2 #size 1 ищет и находит только картинка2 и перемещает курсор на нее
если изменить на
for #i 3 #size 1 ищет и находит только картинка3 и перемещает курсор на нее
и тд

а мне нужно чтобы искал все картинки и перемещал курсор только на найденную картинку
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2021, 20:05
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
а мне нужно чтобы искал все картинки и перемещал курсор только на найденную картинку

Скрипт так и работает. Наводит только на ту, которую нашел.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gt500rx
сообщение 31.1.2021, 21:53
Сообщение #5


*

Registred
Сообщений: 9
Регистрация: 22.11.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.458
Возраст: 31



Да, но находит только указанную в цикле поиска картинок for #i 1 #size 1

Может можно его как-то по другому написать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2021, 22:30
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
Добавьте вывод результата поиска в лог, после set #a findimage
log #i #a
Что в логе?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gt500rx
сообщение 31.1.2021, 23:17
Сообщение #7


*

Registred
Сообщений: 9
Регистрация: 22.11.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.458
Возраст: 31



Не могу , картинки появляются рандомно, когда появляется нужная UoPilot ее не находит. Нет ничего в логе
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2021, 23:21
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
Нет ничего в логе

Если добавили log #i #a, то лог будет выводиться независимо от того нашлось или нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
gt500rx
сообщение 1.2.2021, 9:28
Сообщение #9


*

Registred
Сообщений: 9
Регистрация: 22.11.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.458
Возраст: 31



cirus, спасибо за ответы, я создал новые 5 картинок, проверил скрипт - работает. Я понял почему не работал на ирге, потому что Пилоту чтобы найти четвертую картинку нужно четыре раза промотать цикл for (на каждую картинку 1 раз) а у меня сразу выход из цикла был заложен, я думал он за один раз проверяет сразу все. Понял что мне это не подходит т.к. очень долго получается (примерно 1 сек на картинку), а если у меня 30-40 картинок, то получается мне по 30 сек ждать нужно пока он все проверит
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2021, 11:10
Сообщение #10


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
примерно 1 сек на картинку

Значит картинки большого размера. Уменьшите будет быстро искать.
Также можно уменьшить область поиска, обычно нет смысла искать картинки по всему экрану.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
TheQQmaster
сообщение 11.2.2021, 16:45
Сообщение #11


**

Neophyte
Сообщений: 12
Регистрация: 17.9.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.608
Возраст: 25



script
Код
set $path "D:\UO\pic\whatevername"      //full path to pic folder 

dir (%dirimage $path *.bmp*) // searching for bmp in path
if  size(%dirimage) > 0
        log In folder size(%dirimage) images!

//1) Полный корректный адрес с "\", именем файла, расширением.
// 2) Адрес. Полный адрес слепленный в нормальную строку с "\".
// 3) Имя файла без расширения.
// 4) Расширение файла.
  //5) Размер.
// 6) Атрибуты.
// 7) Дата.
// 8) Время.
// 9) Уровень вложенности для пункта 10.
//  10) Путь с разбивкой 1 папка 1 столбец (для вложенных папок и файлов)

    for #i 1 size(%dirimage)
        set $pathdirpic %dirimage [#i 1] //getting full adress of pic
        set %fullpath [#i] $pathdirpic // making array of full path
    end_for
else
    log No .bmp pics in folder or not correct folder! (full path)
end_if

        set #size size(%image)
        for #i 1 #size 1
            set #a 0
            set #a FindImage(0 0 1920 1080 (%fullpath[#i]) %arr workwindow) // need attach to workwindow
            if  #a = 100 // can use #a > 0 , prefer 100% accuracy
                move %arr [1 1] %arr [1 2] // moving mouse to each pic
                wait 1000
            end_if
        end_for


Сообщение отредактировал Fors1k - 11.2.2021, 17:11
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

- Текстовая версия | Версия для КПК Сейчас: 25.4.2024, 9:08
Designed by Nickostyle