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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> findimage, не работает
dunkel
сообщение 17.10.2022, 21:25
Сообщение #1


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Решил воспользоваться findimage, но почему то она не видит изображения не в игре, не на рабочем столе, не в браузере. Поиск по цвету и другие функции отлично действуют. Пробовал на элементарном примере:

set #a findimage(0, 0, 1920, 1080 (d:\images\2.bmp") %arr 2 80 1 3)
hint #a
if #a > 0
move %arr[1 1] %arr[1 2]
wait 5000
end_if

Раньше таких проблем не было, но давно я не прибегал к помощи УО пилота наверное что-то забыл или какой то плагин не доставил.
win11, UOpilot v.2.42 WK
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 9:56
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



у вас кавычка в адресе изображения только одна


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 12:40
Сообщение #3


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



тоже не работает, я помимо него пробовал и другие варианты в том числе и пример с вики

set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $path "d:\images\"
set %cash[1] 2
set #a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds 2)
if #a > 0
left %crds[1 1] %crds[1 2]
end_if

не знаю в чем может быть дело(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 13:32
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Пилот запущен от админа?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 13:51
Сообщение #5


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 19.10.2022, 12:32) *

Пилот запущен от админа?

да, мб дело в windows 11? Я не могу найти "Aero" (Aero (темы Windows) должен быть включен.) ©. Или может я что-то не доставил, плагин какой-нибудь или библиотеку.


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 14:27
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Попробуйте сделать getimage, затем saveimage полученного изображения. Хоть поймем, что он видит.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 14:39
Сообщение #7


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Проблема была в касперском, после его отключения всё работает. Спасибо за помощь.
Теперь возникла другая проблема это оттенки изображения которые постоянно меняется.
Как я понял за это отвечает #deviation? как мне выставить скажем точность картинки 60 процентов?
добавить в скрипт set #deviation 60?


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 15:17
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



смотрите синтаксис финдимиджа. точность и девиэйшн указываются в хвосте.
разумная точность 80-94 для изображений, для текстов 94-98. Девиэйшн 2 - дает существенный положительный эффект, минусов почти нет. 7+ может начать давать ложно положительные поиски. Значения по сути подбираются вручную.

Сообщение отредактировал DarkMaster - 19.10.2022, 15:21


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 19:28
Сообщение #9


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 19.10.2022, 14:17) *

смотрите синтаксис финдимиджа. точность и девиэйшн указываются в хвосте.
разумная точность 80-94 для изображений, для текстов 94-98. Девиэйшн 2 - дает существенный положительный эффект, минусов почти нет. 7+ может начать давать ложно положительные поиски. Значения по сути подбираются вручную.


Можете объяснить на примере этой строки?
set #a findimage(0, 0, 1920, 1080 (d:\images\1.bmp) %arr 2 80 1 3)

первое 2 это тип поиска? 2 - это быстрый (рекомендуемый)?
80 - это процент совпадения как я понимаю? то есть девейшен?
а последние 1 и 3 это что?

Не могу понять где мне задать погрешность на тональность? цвета (из за времени суток она разниться) (
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 20:28
Сообщение #10


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



2 - тип поиска. по сути актуально либо 2 либо хэндл. если не заморачиваться, то 2 прекрасный вариант
80 - это точность. необходимый % точек который должен совпасть.
1 - количество искомых изображений
3 - девиэйшн (это не тональность, но для компенсации тональности крутить его)

Сообщение отредактировал DarkMaster - 19.10.2022, 20:29


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 20:49
Сообщение #11


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 19.10.2022, 19:28) *

2 - тип поиска. по сути актуально либо 2 либо хэндл. если не заморачиваться, то 2 прекрасный вариант
80 - это точность. необходимый % точек который должен совпасть.
1 - количество искомых изображений
3 - девиэйшн (это не тональность, но для компенсации тональности крутить его)

Не хочет видеть. Буду думать через поиск по цвету.

Можно как то реализовать чтобы при нахождении определённого цвета производилась проверка на несколько пикселей ниже и выше найденной точки, и если оба пикселя меняли цвет на нужную тональность, то скрипт бы срабатывал?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.10.2022, 21:05
Сообщение #12


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Цитата
Можно как то реализовать чтобы при нахождении определённого цвета производилась проверка на несколько пикселей ниже и выше найденной точки, и если оба пикселя меняли цвет на нужную тональность, то скрипт бы срабатывал?

Можно. Нужно будет описывать всю эту логику. Тем не менее я бы не советовал отказываться от финдимиджа слишком быстро. Можно, скажем сделать несколько изображений и каждое с девиэйшеном. Нашло хоть одно - успех.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 19.10.2022, 21:11
Сообщение #13


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 19.10.2022, 20:05) *

Можно. Нужно будет описывать всю эту логику. Тем не менее я бы не советовал отказываться от финдимиджа слишком быстро. Можно, скажем сделать несколько изображений и каждое с девиэйшеном. Нашло хоть одно - успех.


Почти все получилось, только не могу понять как задать область для следующего поиска. Я нахожу объект, перемещаю туда курсор, снимаю его положение с помощью get mouse_pos #x #y, а как мне дальше отталкиваясь от этих координат начать цикл поиска на следующую картинку только уже в более меньшем радиусе например в +-50 от координат снятых гетмаусом
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.10.2022, 11:55
Сообщение #14


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



а зачем вообще мышь двигать? После того, как вы нашли изображение/точку, то у вас уже есть координата мышь не нужна.
Ну и далее что-то вроде:
set #startx #naidenoex - 50
set #endx #naidenoex + 50

ну и в финд потом подсовывать #startx, #endx

аналогично для y координаты


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 23.10.2022, 17:06
Сообщение #15


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 21.10.2022, 10:55) *

а зачем вообще мышь двигать? После того, как вы нашли изображение/точку, то у вас уже есть координата мышь не нужна.
Ну и далее что-то вроде:
set #startx #naidenoex - 50
set #endx #naidenoex + 50

ну и в финд потом подсовывать #startx, #endx

аналогично для y координаты

Код

:2
set #startX 491
set #startY 280
set #endX 1264
set #endY 712
set $path "d:\images\"
init_arr %image 4 5 6 7 8

set #size size(%image)

for #i 1 #size 1 //
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 1 7)
    if  size(%arr) > 0
        for #j 1 size(%arr)
            move %arr[#j 1] %arr[#j 2]  
            wait 500
            goto 1
        end_for
    end_if
end_for
goto 2

:1
get mouse_pos #x #y
if #x,#y 6818061 9526877
    move #x,#y
    kleft #x,#y
    stop_script
end_if
goto 1

пока так получается, я ищу объект, через поиск картинок и потом просматриваю координаты на отсутствия цвета под ним. То есть чтобы мне задать смещение мне надо подставить во вторую часть?
set #startx #naidenoex? И получиться что то вроде?

Код

set #startx #naidenoex - 50
set #endx #naidenoex + 50
get mouse_pos #x #y
if #x,#y 6818061 9526877
move #x,#y
kleft #x,#y
stop_script
end_if


Сообщение отредактировал DarkMaster - 23.10.2022, 21:00
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 23.10.2022, 21:14
Сообщение #16


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



для начала вам вообще не нужен mouse_pos здесь.

move %arr[#j 1] %arr[#j 2]
вы же тут не используете mouse_pos

get mouse_pos #x #y
move #x,#y
в чем смысл конструкции? мы получаем координаты мыши, и перемещаем ее в эти же самые координаты. Т.е. по сути эффективная работа равна нулю: где мышь была там она и будет. Я допускаю, в некоторых частных случаях этот может активировать кнопку, но в общем случае полностью бессмысленные действия.

kleft #x,#y
с тем же успехом вы можете использовать
kleft %arr[#j 1] %arr[#j 2]

разницы не будет никакой. Т.к. по сути вы делаете:
move %arr[#j 1] %arr[#j 2]
get mouse_pos #x #y
move #x,#y
kleft #x,#y
итого мы перемещаем мышь в
%arr[#j 1] %arr[#j 2]
потом получаем координаты мыши в перменные x и y. Зачем? мы уже знаем где она - %arr[#j 1] %arr[#j 2]
и туда же кликаем.

итого:
выкинуть get_mousepos
выкинуть move #x #y
заменить в kleft #x #y на kleft %arr[#j 1] %arr[#j 2]


Если глобально - переходите на lua. Проще его выучить и писать спокойно, чем ловить проблемы старого синтаксиса.
Если не глобально - выкинуть все goto и забыть про них навсегда.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 24.10.2022, 23:40
Сообщение #17


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 23.10.2022, 20:14) *

для начала вам вообще не нужен mouse_pos здесь.

move %arr[#j 1] %arr[#j 2]
вы же тут не используете mouse_pos

get mouse_pos #x #y
move #x,#y
в чем смысл конструкции? мы получаем координаты мыши, и перемещаем ее в эти же самые координаты. Т.е. по сути эффективная работа равна нулю: где мышь была там она и будет. Я допускаю, в некоторых частных случаях этот может активировать кнопку, но в общем случае полностью бессмысленные действия.

kleft #x,#y
с тем же успехом вы можете использовать
kleft %arr[#j 1] %arr[#j 2]

разницы не будет никакой. Т.к. по сути вы делаете:
move %arr[#j 1] %arr[#j 2]
get mouse_pos #x #y
move #x,#y
kleft #x,#y
итого мы перемещаем мышь в
%arr[#j 1] %arr[#j 2]
потом получаем координаты мыши в перменные x и y. Зачем? мы уже знаем где она - %arr[#j 1] %arr[#j 2]
и туда же кликаем.

итого:
выкинуть get_mousepos
выкинуть move #x #y
заменить в kleft #x #y на kleft %arr[#j 1] %arr[#j 2]
Если глобально - переходите на lua. Проще его выучить и писать спокойно, чем ловить проблемы старого синтаксиса.
Если не глобально - выкинуть все goto и забыть про них навсегда.


Да надо наверное подучить lua. Хотя я ни разу не програмист).
А про goto
чем я могу заменить вот этот цикл?

:1
if #x,#y 6818061 9526877
kleft #x,#y
stop_script
end_if
goto 1

как мне сделать чтобы в середине скприпта можно было бы вставить цикл ожидания который бы прирывался только при выполнение условия. И чем плох goto? Он делает скрипт более медленным?

И ещё можно вопрос, вот этот скрипт по моему работает очень долго и у меня не получается им найти нужную картинку которая появляется на какие то ,03 секунды. Это дело в скрипте или просто УО пилот неспособен отслеживать появления картинки с такой скоростью. Например цвет в определённой координате он отслеживает моментально. Можно ли как то ускорить этот скрипт?

set #startX 491
set #startY 280
set #endX 1264
set #endY 712
set $path "d:\images\"
init_arr %image 4 5 6 7 8

set #size size(%image)

for #i 1 #size 1 // цикл для поиска картинок
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 1 7)
if size(%arr) > 0
for #j 1 size(%arr)
move %arr[#j 1] %arr[#j 2]
wait 500
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 25.10.2022, 0:26
Сообщение #18


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Цитата
А про goto
чем я могу заменить вот этот цикл?

Во 1 это не цикл =) это подобие функции.
Да просто закинуть в основное тело:
if ...
kleft ...
stop_script
end

Цитата
Да надо наверное подучить lua. Хотя я ни разу не програмист).

ну язык пилота вы же выучили в какой-то мере. луа уж точно не сложнее, а вот нежданчиков там несорозмерно меньше.
Цитата
И ещё можно вопрос, вот этот скрипт по моему работает очень долго и у меня не получается им найти нужную картинку которая появляется на какие то ,03 секунды. Это дело в скрипте или просто УО пилот неспособен отслеживать появления картинки с такой скоростью. Например цвет в определённой координате он отслеживает моментально. Можно ли как то ускорить этот скрипт?

во 1 lua. Ну он реально шустрее. Причем на некоторых операциях получалось что-то вроде 200 000 раз шустрее. Тем не менее конкретно в данном случае скорее всего будет основным тормозом findimage и if. При снятии цвета не по хендлу идет съем 30 раз в секунду. Чем это обусловлено я не знаю. Причины так и остались не ясны. У меня было подозрение, что это как-то связанно с вертикальной синхронизаций прежде чем будет выдана картинка. Причем это касается и финдимиджа и if'а. Т.е. между имиджем и ифом будет 66 мс. А если вызовете одиночный иф, то он будет обработан почти мгновенно. Задержка будет только на втором.
У вас достаточно большая область поиска. Если есть возможность - сократите. Время поиска прямопропорционально площади поиска.
deviation увеличивает время поиска. Чем большее - тем медленнее.
Картинка должна быть небольшой. 5x5 пикселей обычно достаточно. Время поиска прямопропорционально площади искомой картинки. В частности обращаю внимание на слово "площади". 50x50 и 5x5 разница не в 10 раз, а в 100.

Скрипт не весь и судить о логике сложно, но из приведенного куска встает вопрос вызывается ли он по кругу бесконечно до получения изображения. Если это так, то шапка с присвоением пременных и инициализацией массива тоже будут вызываться по кругу, что в рамках старого синтаксиса внесет достатчно существенные нагрузки и замедлит скрипт. В таком случае форы лучше лучше взять в дополнительный отдельный цикл типа while 1 = 1.

Переходите на луа. Часть проблем тогда решать вообще не придется.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 25.10.2022, 10:18
Сообщение #19


********

Master
Сообщений: 1.395
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 21064
Пользователь №: 16.156



Цитата(DarkMaster @ 25.10.2022, 0:26) *

При снятии цвета не по хендлу идет съем 30 раз в секунду. Чем это обусловлено я не знаю.



Знаменитые технологии мелкомягких. В зависимости от того что скринишь fps будет разный. Прям вот конкретное окно дольше будет сниматься чем область экрана. Это особенности реализации aero технологии.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 25.10.2022, 15:23
Сообщение #20


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 24.10.2022, 23:26) *

Да просто закинуть в основное тело:
if ...
kleft ...
stop_script
end


Тогда у меня будет весь скрипт проматываться. А так у меня выполняется первая его половина, и потом закаливается на его 2ой, конечной части.

а вот по поводу области я как раз не знаю как ее обозначить. У меня находится 2ая картинка (точнее как обычно координаты её левой верхней части. И я не знаю как мне потом начать искать картинку в области, отталкиваясь от этой найденной координаты.

Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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