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

> Разработка findcolor, findimage, Pure lua
DarkMaster
сообщение 24.3.2021, 18:01
Сообщение #1


***********

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



Собственно обсуждение багов, фич, функционала, тесты и прочее.

Сообщение отредактировал DarkMaster - 27.3.2021, 13:38


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


***********

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



Собственно то, как вот оно есть.
findcolor manual
Код
-- findcolor
-- Функция поиска цвета либо нескольких цветов,
-- с возможностью задать некоторые отклонения в оттенке.
-- Синтаксис:
-- result = findcolor(<x_start, y_start, x_end, y_end | table_crds>,
-- <color> [,method [,count [,deviaton [,deviation_type [,abs_flag]]]])
--
-- <x_start, y_start, x_end, y_end | table_crds>
-- Координтаы задаются в виде прямоугольной области
-- с указанием координаты левого верхнего угла
-- и правого нижнего угла.
-- Координаты могут быть заданы четырмя переменными:
-- x_start, y_start, x_end, y_end
-- либо массивом с аналогичной структурой данных:
-- {x_start, y_start, x_end, y_end}
-- Отсчет координат начинатся с 0, а не 1.
-- Т.е. для FullHD область поиска будет
-- 0, 0, 1919, 1079.
--
-- <color>
-- Цвета, которые непосредственно ищются.
-- Синтаксис списка цветов:
-- <color | {color_1 [,color_2 [,... [,color_N]]]}>
-- Допустимые форматы цвета:
-- < dec_hex_color | dec_hex_color_1-dec_hex_color_2 |
-- {[r=val_1] [,g=val_2] [,b=val_3]} | [{r=val_1-val_2] [,g=val_3-val_4] [,b=val_5-val_6}] >
-- Форматы цветов можно кобинировать в рамках списка. Например:
-- 133972, 0x5060DD-0x5170DD, {r=10, g=0xFF, b=12-18}
--
-- [method]
-- Метод поиска. Значение по умолчанию: 2
-- 0/не задан     - Быстрый метод. Получить изображение всего экрана.
-- 1              - устаревший метод, используется для совместимости. Очень медленный.
--                  Для получения изображения всего экрана, а не окна используйте abs_flag.
-- 2              - надежный метод. Средняя скорость.
--                  Для получения изображения всего экрана, а не окна используйте abs_flag.
-- хендла_окна    - очень быстрый метод. Работает с перекрытыми окнами.
--                  Предпочтительно использовать именно его. Не работает с некоторыми приложениями.
--                  Для корректной работы может потребоваться задать хендл родительского окна.
-- адрес_картинки - Адрес изображения в формате bmp 24 бита.
--                  "my_image.bmp" - изображение рядом с exe пилота.
--                  "folder\\my_image.bmp" - изображение в папке folder рядом с exe пилота
--                  "\\my_image.bmp" - изображение в корне диска, на котором лежит пилот.
--                  [[d:\uopilot\images\my_image.bmp]] - абсолютный путь.
--                  Учтите, что при задании адресов в lua символ '\' необходимо удваивать,
--                  либо заменять на '/', либо брать весь адрес в двойные квадртные скобки.
-- адрес_памяти,  - Поиск в ранее полученном изображении по средством функции getimage()
-- высота_изобр,    Указывается адрес битовой маски, высота изображения, ширина и количество
-- ширина_изобр,    байт на каждую строку. Из-за выравнивания размер строки может быть
-- длина.           не кратным битности изображения. Данный параметр так же используется
--                  для определения формата битовой маски (24 бита либо 24 бита цвет + 8 резерв).
--
-- [count]
-- Количество искомых изображений. 0 | -1 - найти все.
--
-- [deviation]
-- Допустимые отклонения цвета.
-- Синтаксис:
-- deviation_general | {blue, green, red} |
-- {blue_bottom, green_bottom, red_bottom, blue_upper, green_upper, red_upper}
-- Отклонения цвета может быть задано одним числом на все каналы в + и в -,
-- либо на каждый канал отдельно,
-- либо на каждый канал отдельно и отдельно нижняя и верхняя граница канала.
--
-- [deviation_type]
-- Тип расчета допустимого отклонения цвета. Значение по умолчанию "r".
-- Возможные значения:
-- "a" - absolute. Абсолютное отклонение канала.
--       Например, при цвете 50 100 200 и абсолютном отклонении 10,
--       допустимый диапазон цветов будет равен 40-60, 90-110, 190-210
-- "r" - relative. Относительное отклонение, задается в процентах.
--       Например, при цвете 50 100 200 и относительном отклонении 10,
--       допустимый диапазон цветов будет равен 45-55 90-110 180-220.
--       Округление происход в сторону расширения диапазона.
--       Например, при значении канала 101 и допустимом отклонении 10%,
--       допустимыми значениями канала будут 101-11=90 101+11=112, т.е. 90-112.
-- "s" - shadow. Затемнение/осветление. Рассчитывается соотношение каналов, задается в процентах.
--       Данный метод может быть полезен, например, при смене суток в игре.
--       В рамках данного метода цвет 50 100 200 и цвет 25 50 100 - будут полностью идентичны.
--       Для указанных цветов: 200/50=4 50/100=0.5 100/200=0.5
--                             100/25=4  25/50=0.5  50/100=0.5
--       При допустимом отклонении в 10, будут считаться допустимыми соотношения каналов:
--       3.6-4.4 0.45-0.55 0.45-0.55
--
-- [abs_flag]
-- Флаг указывающий на то, что изображение должно быть получено не относительно с окна
-- к которому произведена привязка пилота через Ctrl+A или workwindow,
-- а относительно левого верхнего угла экрана.
-- Актуально для method 1, 2.

Мной сознательно проигнорированы shift_x shift_y из стандартного финдколора, которые вроде как были призваны снизить нагрузку. Они реально нужны? Я просто их не использовал никогда ввиду того, что смысла в них не видел, скорости относительно хватало, а вот пропустить что-нибудь важное можно. Если надо - вкручу.
Идеи/предложения/замечания?

Сообщение отредактировал DarkMaster - 27.3.2021, 14:51


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

Сообщений в этой теме
DarkMaster   Разработка findcolor, findimage   24.3.2021, 18:01
sutra   Я в теме. Я давно отказался от передачи массивов. ...   25.3.2021, 16:34
DarkMaster   Ловлю на слове. Пока хочу допилить, то, что есть,...   25.3.2021, 17:12
sutra   Не помню сколько у меня на фул хд. Я же сказал при...   25.3.2021, 17:28
DarkMaster   Ты где тут нашел адекватного?) Ну а вообще тесты ...   25.3.2021, 17:28
sutra   Да я понял, но у меня в основном нагрузка на файнд...   25.3.2021, 17:42
DarkMaster   По поводу создания изображений и помощи валенкам у...   25.3.2021, 17:50
DarkMaster   Из забавного. Речь пойдет о чтении из памяти данны...   26.3.2021, 0:34
sutra   Ну вот, зачем спрашивается лопатить фул хд. Разбил...   26.3.2021, 16:43
DarkMaster   ну вообще типа да, но типа нет. Поуму нужно делать...   26.3.2021, 16:49
sutra   rmem ("unsigned char*",i)[2] Я собствен...   26.3.2021, 17:07
DarkMaster   Автор Cirus --lua local ffi = require("ffi...   26.3.2021, 17:31
sutra   Понял лишь в общих чертах. Вопрос, а в файл сохран...   26.3.2021, 17:58
DarkMaster   Вот этот момент не совсем ясен. Почему 0 0? Почем...   26.3.2021, 18:00
sutra   Я правильно понимаю, что мне надо добавить возврат...   26.3.2021, 18:11
DarkMaster   Пока кроме скорости ничего не тестил, по идее он в...   26.3.2021, 18:15
sutra   ОК. Буду ждать новостей. Cirus-у отдельное БОЛЬШОЕ...   26.3.2021, 18:16
cirus   Потому что 0 0 это координаты куда скопировать из...   27.3.2021, 1:59
DarkMaster   Накидал кучу вопросов Cirus'у и надеюсь, что о...   27.3.2021, 11:41
cirus   --lua local ffi = require("ffi") ...   27.3.2021, 21:21
sutra   Дарк, прочитал мануал. Что точно нужно добавить - ...   28.3.2021, 10:15
sutra   Для чего нужен шаг? Например для поиска активной р...   28.3.2021, 10:41
DarkMaster   Как весело провести вечер и утро. А знаете ли вы,...   28.3.2021, 12:31
sutra   Попробовал новый getimage. Работает намного быстре...   28.3.2021, 13:43
DarkMaster   А максимума нет. Размер окна может быть намного б...   28.3.2021, 13:54
sutra   Насколько я понимаю, по уму надо бы возвращать адр...   28.3.2021, 13:59
DarkMaster   Я так и делаю. Все скоро будет =)   28.3.2021, 14:03
DarkMaster   Бэкапу пару дней. !@#$ notepad++   28.3.2021, 23:12
sutra   А тут как дела? Подвижки есть?   29.3.2021, 15:11
DarkMaster   Есть, откатился из-за чудес выше до момента пока ...   29.3.2021, 15:51
DarkMaster   Захват изображения. Вот так вроде похоже на правду...   29.3.2021, 17:09
Cockney   Ну и идейно я делаю замену пилотовских функций с ...   29.3.2021, 20:33
DarkMaster   Планов очень много, идей очень много. Я очень не ...   29.3.2021, 21:00
Cockney   Планов очень много, идей очень много. Я очень не ...   29.3.2021, 23:47
DarkMaster   Если угодно - сглазить не хочу. Блокнот реально по...   29.3.2021, 23:55
sutra   Ну вот, я явился возмутителем спокойствия и благод...   30.3.2021, 11:51
sutra   Попробовал сохранить картинку. Ничего не получилос...   30.3.2021, 13:16
cirus   Это начало bmp файла BM. Указать другую папку, в...   30.3.2021, 13:43
sutra   Создаёт файл 14 байт. Доступ к нему действительно ...   30.3.2021, 15:31
sutra   Последовательно пишу заголовок. Перегружаю Пилот, ...   30.3.2021, 15:44
sutra   Дарк, что-то я не понял как пользоваться твоим ими...   30.3.2021, 17:38
DarkMaster   Значит так. Версия из активной разработки. Дальше ...   30.3.2021, 17:38
DarkMaster   --lua local ffi=require "ffi" local rmem=...   30.3.2021, 17:46
sutra   Ни хрена себе ты наворочал. Тут месяц надо разбира...   30.3.2021, 17:47
DarkMaster   ext.lg - перекочевало из другого скрипта, в рамках...   30.3.2021, 17:47
sutra   Конечно моё мнение субъективно. Но вот зачем вообщ...   30.3.2021, 18:16
DarkMaster   Идейно это был изначально возврат к пилотовскому:...   30.3.2021, 18:19
sutra   Может не доглядел (тогда ткни меня носом), но не н...   30.3.2021, 18:34
DarkMaster   По разности каналов не делал. В достаточно большой...   30.3.2021, 18:41
sutra   Да я всё понимаю. Поэтому и не берусь претендовать...   30.3.2021, 18:43
DarkMaster   Если есть любые идеи, как оно должно быть - готов ...   30.3.2021, 18:43
sutra   Да, кстати. Что-то у меня не получилось сохранить ...   30.3.2021, 18:45
DarkMaster   --lua local ffi=require "ffi" local rmem=...   30.3.2021, 18:54
sutra   Вот объясните мне почему так? Просто хочу понять, ...   30.3.2021, 20:15
DarkMaster   Это является флагом писать строки сверху-вниз или...   30.3.2021, 20:18
sutra   Спасибо, ну примерно так и подозревал. Плохо ничег...   30.3.2021, 20:22
DarkMaster   Ну да, самое крутое не знать и писать. Думаешь я ...   30.3.2021, 20:25
sutra   Соответственно 32 битовая модель не требует контро...   30.3.2021, 20:30
Madeus   speed = speed + os.clock() - t Лишняя строчка?)   30.3.2021, 20:32
sutra   Эх! Понять бы ещё почему у меня проблемы с зап...   30.3.2021, 20:36
DarkMaster   бенчмарк. Ну для релиза лишняя, для работы не сов...   30.3.2021, 20:42
sutra   Перегруз не помог. Нарушается у меня доступ к запи...   30.3.2021, 20:44
Madeus   бенчмарк. Ну для релиза лишняя, для работы не сов...   30.3.2021, 20:59
DarkMaster   Можно удалить. Мой код тестов: speed = 0 catch = 0...   30.3.2021, 21:08
Madeus   Если не указать [deviation] вылетает с ошибкой .lu...   30.3.2021, 21:19
DarkMaster   чуть выше писал, что на данный момент только со в...   30.3.2021, 21:27
Madeus   У меня одного если не указать "abs" то и...   30.3.2021, 22:51
DarkMaster   Какой метод при поиске указан? При методе 2 будет...   31.3.2021, 0:00
Madeus   Какой метод при поиске указан? При методе 2 будет...   31.3.2021, 0:12
DarkMaster   Это сделано исключительно для совместимости со ста...   31.3.2021, 0:23
DarkMaster   Sutra, я тут в итоге все-таки наткнулся на один уж...   31.3.2021, 0:45
DarkMaster   Кстати низя. Ты никак диапазоном не задашь, что r...   31.3.2021, 2:06
Madeus   Метод 2, тогда понятно, хотя надо проверить скоро...   31.3.2021, 2:06
DarkMaster   В обоих случаях зоны имели одинаковые цвета? Мето...   31.3.2021, 2:43
cirus   Сделать скрин и искать на скрине, быстрее будет.   31.3.2021, 3:01
DarkMaster   100 прогонов во всех тестах Фулл хд. Абс выкл. r ...   31.3.2021, 3:06
Madeus   В целом абс существенным образом не повлияло на о...   31.3.2021, 17:20
sutra   Спасибо Дарк. Конечно так я и сам могу, но по при...   31.3.2021, 11:27
DarkMaster   Я его код не тестил. Мне скрины на тот момент были...   31.3.2021, 13:03
DarkMaster   Накидал скринилку. Фиксировные битовые константы з...   31.3.2021, 17:44
Madeus   Только в случае, если используется метод 2 или ме...   31.3.2021, 17:51
sutra   Тест старого и нового имиджа по хендлу зона old ...   31.3.2021, 17:59
DarkMaster   Круто я когда-то лажанул. Убрал объявление getimag...   31.3.2021, 18:07
Madeus   Круто я когда-то лажанул. Убрал объявление getima...   31.3.2021, 18:14
sutra   Хотя тестить в lua - гиблое дело. Можно лишь прибл...   31.3.2021, 18:12
DarkMaster   getimage 100 итераций вызов + удаление изображения...   31.3.2021, 18:44
sutra   Дарк, спасибо за скринилку. Всё, на сегодня хватит...   31.3.2021, 19:05
DarkMaster   На самом деле там проблема только одна - он делае...   31.3.2021, 19:23
Madeus   Нужно добавить возврат координат найденного цвета,...   31.3.2021, 22:41
DarkMaster   Функция возвращает таблицу найденных цветов: x y ц...   31.3.2021, 23:23
Madeus   Проблема в том что она возвращает x y относительно...   1.4.2021, 0:11
DarkMaster   Вот для этого тесты и есть =) Поправлю. Спасибо.   1.4.2021, 0:12
Madeus   Супер, спасибо за труды! :) Ждем findimage B)   1.4.2021, 0:17
DarkMaster   1)+ Переделать метод 0 для поиска по относительным...   1.4.2021, 2:12
Madeus   У меня до сих пор тяжелые думы по поводу шага пои...   1.4.2021, 2:35
DarkMaster   Хмм.. Вообще я не то залил, но этот фикс вроде но...   1.4.2021, 2:49
cirus   За всё время шаг поиска использовал только 1 раз. ...   1.4.2021, 3:02
Madeus   То ли лыжы не едут то ли спать пора. В общем что у...   1.4.2021, 3:04
DarkMaster   И то и другое. Спать пора - я не ту версию залил,...   1.4.2021, 3:19
6 страниц V  1 2 3 > » 


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

 

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