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

30 страниц V « < 2 3 4 5 6 > »   
Ответить в эту темуОткрыть новую тему
> Разработка findcolor, findimage, Pure lua
sutra
сообщение 30.3.2021, 20:36
Сообщение #61


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Эх! Понять бы ещё почему у меня проблемы с записью в файл bmp. Попробую-ка я комп перегрузить, наверное уже месяц маслает круглые сутки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 30.3.2021, 20:42
Сообщение #62


***********

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



Цитата
Лишняя строчка?)

бенчмарк. Ну для релиза лишняя, для работы не совсем.


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


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Перегруз не помог. Нарушается у меня доступ к записываемому файлу. Очень странно, вроде, ну чего уж может быть проще.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 30.3.2021, 20:59
Сообщение #64


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



Цитата(DarkMaster @ 30.3.2021, 20:42) *

бенчмарк. Ну для релиза лишняя, для работы не совсем.

Я к тому что тестирую через require и вылетает с ошибкой на этой строчке)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 30.3.2021, 21:08
Сообщение #65


***********

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



Можно удалить. Мой код тестов:
Код
speed = 0
catch = 0
local r

showwindow()
wait(100)

log(os.clock())
local t = os.clock()
for i = 1, 1 do
--    r = clr.findcolor(0, 0, 1919, 1079, {3302600,3302601,3302602,3302603,3302604}, "image/test.bmp", 100, 5, "a")
--    r = clr.findcolor(1810, 970, 1919, 1079, {3302600,3302601,3302602,3302603,3302604}, 593568, 100, 10, "r")
--    r = clr.findcolor(0, 0, 1919, 1079, 3302600, "image/test.bmp", 100, 6, "a")
--    r = clr.findcolor(0, 0, 1919, 1079, 3302600 , 2, 100, 6, "a")
end
log(os.clock() - t)
log(speed)
log(catch)


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


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



Если не указать [deviation] вылетает с ошибкой .lua:489: attempt to index local 'v' (a nil value)
Если координаты указать массивом то вылетает с ошибкой .lua:614: bad argument #2 to 'min' (number expected, got nil)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 30.3.2021, 21:27
Сообщение #67


***********

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



Цитата
Если не указать [deviation] вылетает с ошибкой

чуть выше писал, что на данный момент только со включенным девиэйшином работает. Причина тому - это реализовано по сути будет блочным копированием вместо вызова функций. Если сейчас сделать блочное копирование по 4 вариантам сравнения, то в итоге все правки нужно будет делать в 4 местах. a,r,s - должны работать.


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


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



У меня одного если не указать "abs" то ищет в фулхд, хотя указаны конкретные координаты?

Лог без abs
Код

268554272 1921 1081 5764
268554272 273787983 5764


Лог с abs
Код

12398680 63 60 192
12398680 12410199 192



Кстати такой баг был замечен и со старым getimage
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.3.2021, 0:00
Сообщение #69


***********

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



Цитата
У меня одного если не указать "abs" то ищет в фулхд, хотя указаны конкретные координаты?

Какой метод при поиске указан?
При методе 2 будет использован старый getimage, он вернет изображение всего экрана, НО поиск должен быть именно в указанных координатах.


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


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



Цитата(DarkMaster @ 31.3.2021, 0:00) *

Какой метод при поиске указан?
При методе 2 будет использован старый getimage, он вернет изображение всего экрана, НО поиск должен быть именно в указанных координатах.

Метод 2, тогда понятно, хотя надо проверить скорость.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.3.2021, 0:23
Сообщение #71


***********

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



Это сделано исключительно для совместимости со старым кодом. Предполагается, что в дальнейшем основным методом будет забор по хендлу, либо если будут проблемы, то через метод 0, который по сути тоже самое, но не на приложение, а на весь экран. При методе 0 никто не мешает указать стартовые координаты приложения и его размер. Возможно имеет смысл сделать это более легким для использования(скрыто получать координаты приложения и его размер) и врубить там проверку abs.


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


***********

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



Sutra, я тут в итоге все-таки наткнулся на один ужас в загашниках... Сразу предупреждаю - это делалось, когда у нас был убогий crystal lua, не было luajit и все работало через Ж из-за этого crystal. Писалось чисто ради теста и экспериментов с графикой и пониманием bmp.
Короче скринилка есть, она работает, но нужно зажмуриться, скопировать код и никогда в него не смотреть. Она еще и дикий тормоз, но вроде шуршит.
зажмурься
Код

local ffi           = require[[ffi]]
local clr           = require[[lua_system\color]]

local function full_trash(path, a, w, h, l)

local binary = {}
function binary.writeInt(file, x)
    local b4=x%256  x=(x-x%256)/256
    local b3=x%256  x=(x-x%256)/256
    local b2=x%256  x=(x-x%256)/256
    local b1=x%256  x=(x-x%256)/256
    return file:write(string.char(b4,b3,b2,b1))

end

local f = io.open(path, 'wb')
f:write([[BM]])
binary.writeInt(f, h*w*3+54)
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0x36))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0x28))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
binary.writeInt(f, w)
binary.writeInt(f, h)
f:write(string.char(0x1))
f:write(string.char(0))
f:write(string.char(0x18))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
f:write(string.char(0))
binary.writeInt(f, w*h*3)
for i = 1, 16 do
    f:write(string.char(0))
end


--for i = a, a+l*w, l do
--for i = a, a+l*w, l do
log(a,l,h)
local i = a+l*h-l
log()
log(i,a)
while i >= a do
    for j = i, i+l-1, 3 do
        f:write(string.char(ffi.cast("unsigned char*", j)[0],
                            ffi.cast("unsigned char*", j)[1],
                            ffi.cast("unsigned char*", j)[2]   ))
    end
    i = i - l
end

f:close()
end

showwindow()
wait(100)

local a, w, h, l = clr.getimage(0,0,1919,1079,0)
full_trash([[image\my_pic.bmp]], a, w, h, l)




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


***********

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



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

Кстати низя. Ты никак диапазоном не задашь, что r должен быть в 2 раза больше, чем g, с допустимым отклонением 10%.


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


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



Цитата(Madeus @ 31.3.2021, 0:12) *

Метод 2, тогда понятно, хотя надо проверить скорость.

В общем findcolor в цикле прогоняет 20 зон
С abs справляется за 0.375
Без abs справляется за 0.696
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.3.2021, 2:43
Сообщение #75


***********

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



Цитата
С abs справляется за 0.375
Без abs справляется за 0.696

В обоих случаях зоны имели одинаковые цвета?
Метод 2?
Входные данные какие?

Сообщение отредактировал DarkMaster - 31.3.2021, 2:43


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


**********

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



Цитата
В общем findcolor в цикле прогоняет 20 зон

Сделать скрин и искать на скрине, быстрее будет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.3.2021, 3:06
Сообщение #77


***********

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



100 прогонов во всех тестах

Фулл хд. Абс выкл.
r = clr.findcolor(0, 0, 1919, 1079, 3302600 , 2, 100, 6, "a")
полное время выполнения: 8.4 секунды.
время анализа изображения: 0.36 секунды.

Фулл хд. Абс вкл.
r = clr.findcolor(0, 0, 1919, 1079, 3302600 , 2, 100, 6, "a", "abs")
полное время выполнения: 9.941
время анализа изображения: 0.37000000000018

Область 1/100 фулл хд. Абс выкл.
r = clr.findcolor(0, 0, 191, 107, 3302600 , 2, 100, 6, "a")
end
полное время выполнения: 8.789
время анализа изображения: 0.0039999999999054

Область 1/100 фулл хд. Абс вкл.
r = clr.findcolor(0, 0, 191, 107, 3302600 , 2, 100, 6, "a", abs)
полное время выполнения: 8.4830000000001
время анализа изображения: speed: 0.010999999999967

speed это как раз для оценки скорости алгоритма сравнения.
Все остальное уходит на парсинг и захват изображения.

В целом абс существенным образом не повлияло на общее время выполнения. Тем не менее по каким-то причинам захват большой области происходил чуть дольше именно с абс, чем такой же области без абс.
При уменьшении области в 100 раз можно наблюдать идеально ровное уменьшение времени поиска в 100 раз в рамках именно анализа изображения. Почему при абс время поиска сокращается только в 30 раз для меня некоторая загадка.
Если взглянуть на картину в целом, то время анализа просто тонет во времени захвата изображения. В среднем анализ занял 4% времени при поиске фул хд, и 0.087% при поиске в области 1/100 от фулл хд.

Сообщение отредактировал DarkMaster - 31.3.2021, 3:08


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


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

Спасибо Дарк. Конечно так я и сам могу, но по примеру будет проще.

То, что в lua убогая работа с файлами - это всем известный факт. Меня волнует другое. Я терпеть ненавижу непонятки. Любая непонятка - источник ошибок в будущем. Вопрос то, почему Пилот блокирует файл, почему блокирует только у меня - это ещё интереснее. Или кроме меня больше никто не пробовал код cirus-а. Почему на казалось бы самом продвинутом низком уровне такое происходит. А может есть уровень повыше? Ну например как в дельфине rewrite, blockwrite.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 31.3.2021, 13:03
Сообщение #79


***********

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



Я его код не тестил. Мне скрины на тот момент были не нужны совсем, а одновременно заниматься двумя разными вещами я не могу. Сегодня гляну.


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


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8501
Пользователь №: 19.451
Возраст: 32



Цитата(DarkMaster @ 31.3.2021, 3:06) *

В целом абс существенным образом не повлияло на общее время выполнения. Тем не менее по каким-то причинам захват большой области происходил чуть дольше именно с абс, чем такой же области без абс.
При уменьшении области в 100 раз можно наблюдать идеально ровное уменьшение времени поиска в 100 раз в рамках именно анализа изображения. Почему при абс время поиска сокращается только в 30 раз для меня некоторая загадка.
Если взглянуть на картину в целом, то время анализа просто тонет во времени захвата изображения. В среднем анализ занял 4% времени при поиске фул хд, и 0.087% при поиске в области 1/100 от фулл хд.

Я просмотрел код и возник вопрос. В коде получается используем старый getimage? поправил, потестил ощутимо быстрее с новым getimage. В 100 раз с методом хендла окна. С abs 0 и 2 (старый getimage) метод разницы нет, а без abs разница более чем в 3 раза.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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