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

18 страниц V « < 9 10 11 12 13 > »   
Ответить в эту темуОткрыть новую тему
> Новая Версия Uopilot v.2.40 (05.11.2017), Официальный сайт. Скачать. Последняя версия.
DarkMaster
сообщение 7.11.2018, 1:44
Сообщение #201


***********

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



Вообще самым быстрым вариантом будет работа с указателями и прямое чтение памяти. Но в lua этого нет. Более того в луа нет таких типов данных, как byte и int. Тут все на double. Это однозначно приведет к проблеме скорости, т.к. все byte должны будут приведены к типу double. Объем изображения приличный и эти преобразования уже начинают давать свои проблемы. Вообще для подобного анализа луа не лучший вариант, хотя однозначно можно. Если это именно в плане подготовки изображений, т.е. какой-то предварительный анализ для последующего использования статистики, кусков изображений и т.д., то этой скорости будет достаточно, если речь идет о реал тайм обработке, то могут возникнуть вопросы (очень сильно зависит от размера изображения).

Отдельная просьба к кнайту, т.к. это минимум второй человек, который озадачился данным аспектом - сделать пуш битовой маски в массив луа. Что-то вроде:
local arr = BitmaskToArray(pointer)
ArrayToBitmask(arr, pointer)
Всяко лучше, чем имиджи насиловать, трудозатраты, по идее там сиволические на это дело.

Сообщение отредактировал DarkMaster - 7.11.2018, 1:52


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


*******

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



Вопрос, самый простой способ получить доступ к конкретному символу строки в lua. Случайно обнаружил, что работают и chr и ord. Оператор ord(str) возвращает значение первого символа строки.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 7.11.2018, 2:37
Сообщение #203


*******

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



Цитата
Вообще самым быстрым вариантом будет работа с указателями

Я правильно понял, что если прицепить плагин, ну скажем на делфи, то если задать pointer , то можно считать данные с этого участка памяти?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.11.2018, 2:42
Сообщение #204


***********

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



local ch = string.sub (str, pos, 1)


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


*******

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



Цитата
local ch = string.sub (str, pos, 1)

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


***********

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



Цитата
Я правильно понял, что если прицепить плагин, ну скажем на делфи, то если задать pointer , то можно считать данные с этого участка памяти?

Плагином - да. НО нужно понимать, что если будете просто передавать значения в пилот, то просто получится тот же самый readmem. Сама обработка должна быть внутри языка поддерживающего указатели(внутри плагина).


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


*******

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



Цитата
Сама обработка должна быть внутри языка

Ну это-то понятно, там я могу делать что угодно и как угодно. Спасибо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.11.2018, 2:54
Сообщение #208


***********

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



Цитата
Спасибо, ну я так и думал, что только через функцию.

Ибо обращение через позицию - суть работа с указателями. Тут этот нет =) Лично для меня одна из самых больных тем. Ну привык я, что можно забить на все условности и самому напрямую сделать то, что хочу.


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


*******

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



Дарк, я так и не понял в каком формате хранятся данные, которые даёт getimage. Читаю readmem по байтам и что-то не понимаю логики. Тех байтов, которые потом кладутся в bmp картинку я не нахожу.

В bmp кладутся чистые байты без минусов, для каждого канала 0-255. Может я читаю в другом формате? Типа word с минусами?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.11.2018, 14:54
Сообщение #210


**********

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



Цитата
в каком формате хранятся данные

В таком:
bgrbgrbgr
Где b-синий канал, g-зелёный, r- красный. Плюс выравнивание строки, должна быть кратна 4.
Код
--lua
log "clear" log "mode compact"
local address, w, h, len=getimage(0, 0, 5, 5)
local arr, k = {}, 1

for i=0, h-1 do
    arr[k]={}
    for j=0, len - (len - w * 3 + 1), 3 do
        local b=readmem(address + len * i + j, "b", windowhandle())
        local g=readmem(address + len * i + j + 1, "b", windowhandle())
        local r=readmem(address + len * i + j + 2, "b", windowhandle())
        -- log (r, g, b)
        table.insert(arr[k], r + g * 256 + b * 65536)
    end
    k=k+1
end

for i=1, #arr do
    log(table.concat(arr[i], "  "))     -- вывод массива в лог
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 7.11.2018, 15:16
Сообщение #211


*******

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



Цитата
В таком

Вроде всё так и делаю, ладно сейчас врублюсь. Спасибо.

Просто я сильно усложнил, ещё раз спасибо.

Решил свой файнд соорудить.

Цитата
windowhandle


Вот и вся причина, как обычно незнание прописных истин.


Плохо конечно методом тыка без примеров чего-то делать, но нет худа без добра все форматы "по косточкам перебрал". Чего забыл - вспомнил, да и нового немало почерпнул.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 7.11.2018, 15:31
Сообщение #212


*******

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



Cirus, спасибо огромное, всё работает как часы, получился быстрый полноценный файнд, ищет только те пиксели, которые нужны.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.11.2018, 17:53
Сообщение #213


*******

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



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

tmp=readmem(index+1,"w",windowhandle())
red=math.modf(tmp/256)
green=math.fmod(tmp, 256)

Поэтому по уму надо или плагин писать или может Кнайт что-то придумает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.11.2018, 18:28
Сообщение #214


*******

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



Можно ещё в строку читать кусками до 255 байт, пока это лучший вариант.

str="0"..chr(0).."1".. chr(1).."2"
log(string.byte(str,4))

Всё анализируется без проблем.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.11.2018, 19:38
Сообщение #215


***********

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



Цитата
tmp=readmem(index+1,"w",windowhandle())

заменить на:
local handle = windowhandle() -- в шапку
tmp=readmem(index+1,"w",handle) -- обновить в теле

Цитата
Можно ещё в строку читать кусками до 255 байт, пока это лучший вариант.

За пределы изображения только не выйдете - крашануть может, если память не размечена.


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


*******

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



Цитата
За пределы изображения только не выйдете

Обижаешь Дарк. У меня большие проблемы с языком, но с алгоритмами пока я в ясной памяти. Пока сделал по строкам, но думаю и по вертикали додумаю. Определяю количество чтений для каждой строки и количество байт при последнем считывании.
numreed=math.ceil((x2-x1+1)*3/255)
ostatok=math.fmod((x2-x1+1)*3,255)



Цитата
tmp=readmem(index+1,"w",handle) -- обновить в теле

Спасибо, как я и говорю - проблемы ...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 8.11.2018, 21:04
Сообщение #217


*******

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



Обработка строками (пока правда мало вариантов тестировал) дала отличный результат. Побайтово я получал массив для 6 (2 строки по вертикали) пикселей 5 тысячных секунды, построково в 10 раз быстрее.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.11.2018, 2:33
Сообщение #218


**********

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



Код
--lua
resultarray, count = dir ([[C:\Windows]], "*.bmp", "norecursion")
log (resultarray, count)

В resultarray возвращает таблицу даже если файлы не найдены.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.11.2018, 19:59
Сообщение #219


***********

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



Файлы *.lua не оторбажаются по умолчанию при открытии скриптов. Приходится выставлять маску *.*.


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


***********

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



при выключении галки "добавлять пробелы", они все равно продолжают добавляться. Для луа не удобно.


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

18 страниц V « < 9 10 11 12 13 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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