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

11 страниц V « < 5 6 7 8 9 > »   
Ответить в эту темуОткрыть новую тему
> Поиск числа с помощью Findimage, Готовый скрипт
cirus
сообщение 27.9.2017, 14:06
Сообщение #121


**********

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



Цитата
Даже если в умлочаниях вместо nil'ов что-то задать, то это не приведет как каким-то последствиям.

Код
result = imageToString{crds={33, 189, 292, 255},
                       loadFolder = {path="C:\\l2number3", mask="*bmp", sub=1}}

Так нормально.
Я думал нет никакой разницы передать в качестве параметра или сразу задать по умолчанию
Код
default.loadFolder = {path="C:\\l2number3", mask="*bmp", sub=1}
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.9.2017, 16:25
Сообщение #122


***********

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



проблемы какие-то остались? копирование остальных массивов чем-то обусловлено кроме подозрений?


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


***********

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



Цитата
Я думал нет никакой разницы передать в качестве параметра или сразу задать по умолчанию

По сути ее и нет. Это был частный случай поскольку переданный параметр не только считывался для организации логики, но и преобразовывался (дописывался полный путь).


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


**********

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



Цитата
проблемы какие-то остались?

Работает нормально, но ещё не всё успел потестить. Если что-то найдётся, то напишу.
Цитата
Раскомментировать, если в отладке будет использоват table.show.

Проще оставить не закомментированным.

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


***********

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



Цитата
Проще оставить не закомментированным.

Table системная библиотека, по сути я ее расширяю. Оставлено в первую очередь чтобы не затерялось. Я старался по минимуму оставлять что-либо видное снаружи, буфер бы тоже в какое-то пространство имен общее с основной функцией, но уж больно несуразно тогда выглядит вызов. Релизить буду предпоследнюю версию без лишних копирований массива.


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


***********

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



Данный скрипт предназначен для распознавания чисел, текста и различных символов (например, значков серебра, голда). Скрипт учитывает возможные пробелы и переносы строк. Параметры в квадратных [] скобках являются не обязательными, параметры в угловых скобках <> указываются всегда. Квадратные и фигурные скобки при вызове функций не пишутся, они лишь указывают возможность не задавать параметр. Фигурные {} и круглые () скобки пишутся, там где указаны. Символ '|' означает исключающее или, например, sub=0|1 означает, что значение sub может быть равно либо 0, либо 1.


Скрипт включает в себя следующие функции:
Код
--Получение текста из изображения:
t = imageToString.get({[parms],[parms],[parms],...})

--Управление буфером:
--Получение адреса в памяти загруженного в буфер изображения:
imageToString.buffer.get(<путь>)

--Добавление изображения в буфер:
imageToString.buffer.add(<путь>, [адрес])

--Удаление изображения из буфера:
imageToString.buffer.delete(<путь>)

--Полная очистка буфера:
imageToString.buffer.flush()



Результат при поиске текста:
Код
t = imageToString.get{[parms],[parms],[parms],...}

Функция возвращает двумерную таблицу, где первый индекс является номером строки, второй номером слова. Если ничего не найдет, вернет nil. Например, при распознавании текста:
Код
Съешь еще
этих
мягких французских булок.

Массив будет содержать следующие значения:
Код
t[1][1] -- Съешь
t[1][2] -- еще
t[2][1] -- этих
t[3][1] -- мягких
t[3][2] -- французских
t[3][3] -- булок



Известные проблемы:
1.Упрощенный вызов фунции func{} не работает, вызов только через func({}) (ограничено пилотом).
2.Переделать default.crds на get windowpos (ограничено пилотом).
3.Подчитсить findimage (ограничено пилотом).
4.Из-за особенностей костыля финдимиджа создается НЕ локальня переменная tmpOtNiAotNiaorNCOsnaOT.(огрничено пилотом).
5.При передаче источника поиск происходит в ошибочных координатах. Для компенсации конечная X координата задается, как:
options.crds[3] - options.crds[1]
Данная проблема присутствует на версии пилота 2.39 beta10. Если вы используете более свежую версию, то
options.crds[3] - options.crds[1]
может быть необходимо заменить в двух местах на:
options.crds[3]


Параметры при поиске текста:

Данный оператор имеет большое количество возможных параметров, все они необязательными. В теле скрипта есть блок значений параметров используемых по умолчанию, которые вы при желании можете изменить (таблица default).

window=<хендл|метод>
Хендл окна в котором происходит поиск либо метод 1|2. Поиск в перекрытых окнах происходит только при указании хендла. При указании хендла для корректного считывания изображения может понадобиться указывать хендл родительского окна. Значение по умолчанию: workwindow.

loadFolder={<path="путь">, [mask="маска"], [sub=0|1]}
Загрузка всех изображений из указанной папки. Имена файлов должны соответствовать символу который они означают (расширение не учитывается). Допускаются файлы с одинаковым именем в разных папках.
<path="путь"> - абсолютный путь по которому находится папка. Для преобразования относительного пути в абсолютный можно использовать конструкцию path=homepath .. "относительный путь".
[mask="маска"] - маска по которой будут загружены файлы. Допускается использование символов '?' и '*'. ? - означает один любой символ, * - любое количество неизвестных символов. Обратите внимание, что mask=".bmp" означает означает точное совпадение полного имени файла с указанной маской, т.к. символы подстановки не использованы. Если же указать mask="*.bmp", то будут загружены все файлы заканчивающиеся ".bmp".
[sub=0|1] - флаг указывающий, что изображения должны быть загружены в том числе из подпапок.
При указании loadFolder будут проигнорированы параметры: symbols, path, ext. Значение по умолчанию: nil.

symbols={}
Cимволы для поиска. Возможно указать в двух вариантах синтаксиса: упрощенном и полном.
Упрощенный вариант синтаксиса допускает не указывать соответствие имен файлов и строке/символу, который они обозначают: считается, что они идентичны. Пример упрощенного синтаксиса:
local symbols = {"0", "1", "2", "3", "a", "b", "c", "test"}
Полный синтаксис бывает необходим при использовании нескольких изображений соответствующих одной и той же строке/символу. Допускаются переносы строк:
local symbols = {
["0"] = {"zero1", "zero2"},
["1"] = {"1a", "1b"},
["2"] = {"two", "second"}
}
Оба варианта синтаксиса можно сочетать:
local symbols = {"0", "1", ["2"] = {"two", "second"}, "3"}
Данный параметр игнорируется, если указана загрузка папки (loadFolder).
Значение по умолчанию: {["1"]={"1"}, ["2"]={"2"}, ["3"]={"3"}, ["4"]={"4"}, ["5"]={"5"}, ["6"]={"6"}, ["7"]={"7"}, ["8"]={"8"}, ["9"]={"9"}, ["0"]={"0"}}

path=<"путь">
Путь по которому находятся изображения указанные в symbols. Путь может быть задан относительным или абсолютным. Данный параметр игнорируется, если указана загрузка папки (loadFolder). Все символы '\' должны быть удвоены (escape-последовательность), например, path="c:\\image.bmp". Если путь будет начинаться с символа '\', то он будет восприниматься относительно корня диска, например, если пилот находится по адресу d:\uopilot\uopilot.exe, то параметр path="\\myFolder" будет указывать на папку d:\myFolder. Значение по умолчанию: "images\\". Это относительный путь указывающий на папку images, которая находится рядом с exe пилота (создается пользователем).

ext=<"расширение">
Расширение картинок указанных в symbols. Данный параметр игнорируется, если указана загрузка папки (loadFolder). Значение по умолчанию: ".bmp".

crds={<xStart>, <yStart>, <xEnd>, <yEnd>, [abs=0|1]}
Координаты в которых необходимо производить поиск. При указании флага abs=1 координаты будут считаться относительно левого верхнего угла экрана, в противном случае координаты рассчитываются относительно левого верхнего угла приложения. Значение по умолчанию: 0, 0, 1919, 1079, abs=0.

accuracy=<число>
Точность поиска изображений. Для текста рекомендуется указывать 95-100. Значение по умолчанию: 95.

deviation=<число>
Допустимое отклонение оттенка в процентах (255/100*deviation). Если цвет 50 100 150, то при указании deviation=2 допустимыми значениями будут являться 45-55 95-105 145-155. Дробная часть при вычислении диапазона не округляется, а отбрасывается. Значение по умолчанию: 2.

deltaSpace=<число>
Допустимое расстояние по горизонтали между изображениями. Если значение превышено считается, что началось новое слово (присутствует пробел). Значение по умолчанию: 2.

deltaY=<число>
Смещение по высоте при превышении которого считается, что символы принадлежат к разным строкам. Значение по умолчанию: 8.

dupImage=<число>
Смещение при котором два найденных изображения будут считаться дубликатом одного. Значение по умолчанию: 3.

source={<address>, <width>, <height>}
Источник загруженного в память изображения в котором производить поиск.
<address> - адрес в памяти
<width> - ширина изображения
<height> - высота изображения
Изображение возможно загрузить в память при помощи getimage() или loadimage(). Значение по умолчанию: nil.

saveImage=<"путь">
Путь по которому будет сохранено изображение в котором происходил поиск. Значение по умолчанию: nil.

wait=<число>
Пауза в миллисекундах (1000мс=1сек) между поиском изображений. Используется для снижения нагрузки на процессор ценой увеличения времени поиска. Значение по умолчанию: 2.

durationMax=<число>
Время в течении которого будут происходить повторные попытки найти изображение. Значение может быть дробным, например, durationMax=2.5. При указании durationMax=-1 поиск будет происходить бесконечно до тех пор пока изображение не будет найдено. Если первое изображение было найдено, то остальные будут обработаны полностью вне зависимости от таймера, т.е. вы не получите обрезанный текст. При первом успешном распознавании текста функция завершит работу и передаст результат не дожидаясь окончания таймера. Значение по умолчанию: 0.

secondFrame=<число>
Параметр позволяет задать паузу между первым нахождением изображения и началом считывания изображений для распознавания текста. Позволяет дождаться полной прогрузки текста перед обработкой. Обратите внимание, что параметр durationMax учитывает значение secondFrame и не позволит функции работать дольше, чем указано в durationMax. Значение по умолчанию:0.

bufferAddNew=<0|1>
Флаг разрешающий добавлять в память буфера изображения, которые отсутствовали в буфере и были считаны с диска. Данный параметр игнорируется, если указан bufferIgnore=1. Значение по умолчанию: 1.

bufferUpdate=<0|1>
Флаг указывающий на то, что изображения в буфере должны быть обновлены. Они будут считаны с диска заново. Обновятся только те изображения, которые будут учавствовать в поиске. Данный параметр игнорируется, если указан bufferIgnore=1. Значение по умолчанию: 0.

bufferIgnore=<0|1>
Флаг запрещающий работать с буфером. Данный из буфера считаны не будут, загрузка искомых изображений произойдет с диска. Никаких данных в буфер не сохраняется. Значение по умолчанию: 0.

Сообщение отредактировал DarkMaster - 6.10.2017, 7:53


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


**********

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



Цитата
table[1][1] -- Съешь

Не самое удачное имя для таблицы.
Код
--lua
table = {}
table.insert (table, 10)  -- получим ошибку
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.10.2017, 4:51
Сообщение #128


***********

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



Что-то накалялкал. И даже почти все тодо сделал.

Осталось понять, что за бред с вызовами a ={params}. Возможно придется скобки лепить...


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


**********

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



Цитата
Уточнить при deviation происходит trunc() или round().

Если верить вики, то trunc.
Цитата
Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7.

Т. е. 7.65 = 7.
Цитата
timeProc=<число>
т.е. вы не получите обрезанный тест.

текст
Может в timeFunc переименовать, понятнее будет.
Цитата
source
Изображение возможно загрузить в память при помощи getimage() или loadimage()

Тут есть нюанс. Если передавать изображение, то не нужно указывать crds. Искать будет на всём скрине, т. к. findimage (0, 0 width, height ....

options.abs не в getimage должен быть? По идее нужно скрин получать в abs координатах. В findimage он никакой роли не играет, ищем же на скрине.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.10.2017, 6:03
Сообщение #130


***********

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



Скачать скрипт: Прикрепленный файл  FindString.lua_1.0.zip ( 9,55 килобайт ) Кол-во скачиваний: 232

Мануал
Данный скрипт предназначен для распознавания чисел, текста и различных символов (например, значков серебра, голда). Скрипт учитывает возможные пробелы и переносы строк. Параметры в квадратных [] скобках являются не обязательными, параметры в угловых скобках <> указываются всегда. Квадратные и фигурные скобки при вызове функций не пишутся, они лишь указывают на возможность не задавать параметр. Фигурные {} и круглые () скобки пишутся, там где указаны. Символ '|' означает исключающее или, например, sub=0|1 означает, что значение sub может быть равно либо 0, либо 1.


Известные проблемы:
1. Упрощенный вызов фунции func{} не работает, вызов только через func({}) (ограничено пилотом).
2. Переделать default.crds на get windowpos (ограничено пилотом).
3. Подчитсить findimage (ограничено пилотом).
4. Из-за особенностей костыля финдимиджа создается НЕ локальня переменная tmpOtNiAotNiaorNCOsnaOT (огрничено пилотом).
5. При передаче источника поиск происходит в ошибочных координатах. Данная проблема обусловлена багом финдимиджа. После фикса пилота следовать инструкциям в коде после фразы "Фикс финдимиджа" (всего три правки).
6.Из-за фантазий разработчика CrystalLua при вызове функции со вложенностью происходит передача массива в котором содержится функция.
Т.е. при вызове:
imageToString.buffer.get ("d:\\test.bmp")
на самом деле произойдет вызов:
imageToString.buffer.get (imageToString.buffer, "d:\\test.bmp")
НО при вызове:
imageToString.buffer.get "d:\\test.bmp"
будет произведен корректный вызов:
imageToString.buffer.get "d:\\test.bmp"
Для ликвидации этих фантазий введен дополнительный параметр функциях: bugFix, а так же смещение параметров. После фикса необходимо будет удалить помеченные строки:
Следующая строка должна быть удалена при фиксе пиота. Параметр функции bugFix так же должен быть удален. Всего три правки.


Установка:
Для удобства использования необходимо скачать и сохранить скрипт в отдельный файл и подгружать в начале вашего скрипта:
imageToString = require("luaPlugins\\FindString")
Вызов данной команды загрузит модуль FindString.lua из папки luaPlugins, расположенной рядом с пилотом. Т.е. "luaPlugins\FindString.lua".


Скрипт включает в себя следующие функции:
Код
--Получение текста из изображения:
t = imageToString.get{[parms],[parms],[parms],...}

--Управление буфером:
--Добавление изображения в буфер (вернет адрес):
imageToString.buffer.add(<путь>, [адрес])

--Получение адреса в памяти загруженного в буфер изображения:
imageToString.buffer.get(<путь>)

--Удаление изображения из буфера:
imageToString.buffer.delete(<путь>)

--Полная очистка буфера:
imageToString.buffer.flush()



Результат при поиске текста:
Код
t = imageToString.get{[parms],[parms],[parms],...}

Функция возвращает двумерную таблицу, где первый индекс является номером строки, второй номером слова. Если ничего не найдет, вернет nil. Например, при распознавании текста:
Код
Съешь еще
этих
мягких французских булок.

Массив будет содержать следующие значения:
Код
t[1][1] -- Съешь
t[1][2] -- еще
t[2][1] -- этих
t[3][1] -- мягких
t[3][2] -- французских
t[3][3] -- булок



Параметры при поиске текста:

Данный оператор имеет большое количество возможных параметров, все они являются необязательными. В теле скрипта есть блок значений параметров используемых по умолчанию, которые вы при желании можете изменить (таблица default).

window=<хендл|метод>
Хендл окна в котором происходит поиск либо метод 1|2. Поиск в перекрытых окнах происходит только при указании хендла. При указании хендла для корректного считывания изображения может понадобиться указывать хендл родительского окна. Значение по умолчанию: workwindow.

loadFolder={<path="путь">, [mask="маска"], [sub=0|1]}
Загрузка всех изображений из указанной папки. Имена файлов должны соответствовать символу который они означают (расширение не учитывается). Допускаются файлы с одинаковым именем в разных папках.
<path="путь"> - абсолютный путь по которому находится папка. Для преобразования относительного пути в абсолютный можно использовать конструкцию: path=homepath .. "относительный путь".
[mask="маска"] - маска по которой будут загружены файлы. Допускается использование символов '?' и '*'. ? - означает один любой символ, * - любое количество неизвестных символов. Обратите внимание, что mask=".bmp" означает означает точное совпадение полного имени файла с указанной маской, т.к. символы подстановки не использованы. Если же указать mask="*.bmp", то будут загружены все файлы заканчивающиеся сочетанием ".bmp".
[sub=0|1] - флаг указывающий на загрузку изображений, в том числе из подпапок.
При указании loadFolder будут проигнорированы параметры: symbols, path, ext. Значение по умолчанию: nil.

symbols={}
Cимволы для поиска. Набор символов возможно указать в двух вариантах синтаксиса:
Упрощенный вариант синтаксиса допускает не указывать соответствие имен файлов и строке/символу, который они обозначают: считается, что они идентичны. Пример упрощенного синтаксиса:
local symbols = {"0", "1", "2", "3", "a", "b", "c", "test"}
Полный синтаксис бывает необходим при использовании нескольких изображений соответствующих одной и той же строке/символу. Допускаются переносы строк:
local symbols = {
["0"] = {"zero1", "zero2"},
["1"] = {"1a", "1b"},
["2"] = {"two", "second"}
}
Оба варианта синтаксиса можно сочетать:
local symbols = {"0", "1", ["2"] = {"two", "second"}, "3"}
Данный параметр игнорируется, если указана загрузка папки (loadFolder).
Значение по умолчанию: {["1"]={"1"}, ["2"]={"2"}, ["3"]={"3"}, ["4"]={"4"}, ["5"]={"5"}, ["6"]={"6"}, ["7"]={"7"}, ["8"]={"8"}, ["9"]={"9"}, ["0"]={"0"}}

path=<"путь">
Путь по которому находятся изображения указанные в symbols. Путь может быть задан относительным или абсолютным. Данный параметр игнорируется, если указана загрузка папки (loadFolder). Все символы '\' должны быть удвоены (escape-последовательность), например, path="c:\\image.bmp". Если путь будет начинаться с символа '\', то он будет восприниматься относительно корня диска, например, если пилот находится по адресу d:\uopilot\uopilot.exe, то параметр path="\\myFolder" будет указывать на папку d:\myFolder. Значение по умолчанию: "images\\". Это относительный путь указывающий на папку images, которая находится рядом с .exe пилота (создается пользователем).

ext=<"расширение">
Расширение картинок указанных в symbols. Данный параметр игнорируется, если указана загрузка папки (loadFolder). Значение по умолчанию: ".bmp".

crds={<xStart>, <yStart>, <xEnd>, <yEnd>, [abs=0|1]}
Координаты в которых необходимо производить поиск. При указании флага abs=1 координаты будут считаться относительно левого верхнего угла экрана, в противном случае координаты рассчитываются относительно левого верхнего угла приложения. Значение по умолчанию: 0, 0, 1919, 1079, abs=0.

accuracy=<число>
Точность поиска изображений. Для текста рекомендуется указывать 95-100. Значение по умолчанию: 95.

deviation=<число>
Допустимое отклонение оттенка в процентах (255/100*deviation). Если цвет 50 100 150, то при указании deviation=2 допустимыми значениями будут являться 45-55 95-105 145-155. Дробная часть при вычислении диапазона не округляется, а отбрасывается. Значение по умолчанию: 2.

deltaSpace=<число>
Допустимое расстояние по горизонтали между изображениями. Если значение превышено считается, что началось новое слово (присутствует пробел). Значение по умолчанию: 2.

deltaY=<число>
Смещение по высоте при превышении которого считается, что символы принадлежат к разным строкам. Значение по умолчанию: 8.

dupImage=<число>
Смещение при котором два найденных изображения будут считаться дубликатом одного. Значение по умолчанию: 3.

toNumber=<0|1>
Флаг при котором слова состоящие только из цифр будут преобразованы из строки в числовой тип данных. Это необходимо для арифметических действий, а так же для сравнения чисел.

source={<address>, <width>, <height>}
Источник загруженного в память изображения в котором производить поиск.
<address> - адрес в памяти
<width> - ширина изображения
<height> - высота изображения
Изображение возможно загрузить в память при помощи getimage() или loadimage(). Значение по умолчанию: nil.

saveImage=<"путь">
Путь по которому будет сохранено изображение в котором происходил поиск. Значение по умолчанию: nil.

wait=<число>
Пауза в миллисекундах (1000мс=1сек) между поиском изображений. Используется для снижения нагрузки на процессор ценой увеличения времени поиска. Значение по умолчанию: 2.

durationMax=<число>
Время в течении которого будут происходить повторные попытки найти изображение. Значение может быть дробным, например, durationMax=2.5. При указании durationMax=-1 поиск будет происходить бесконечно до тех пор пока изображение не будет найдено. Если первое изображение было найдено, то остальные будут обработаны полностью вне зависимости от таймера, т.е. вы не получите обрезанный текст. При первом успешном распознавании текста функция завершит работу и передаст результат не дожидаясь окончания таймера. Значение по умолчанию: 0.

secondFrame=<число>
Параметр позволяет задать паузу между первым нахождением изображения и началом считывания изображений для распознавания текста. Позволяет дождаться полной прогрузки текста перед обработкой. Обратите внимание, что параметр durationMax учитывает значение secondFrame и не позволит функции работать дольше, чем указано в durationMax. Значение по умолчанию:0.

bufferAddNew=<0|1>
Флаг разрешающий добавлять в память буфера изображения, которые отсутствовали в буфере и были считаны с диска. Данный параметр игнорируется, если указан bufferIgnore=1. Значение по умолчанию: 1.

bufferUpdate=<0|1>
Флаг указывающий на то, что изображения в буфере должны быть обновлены. Они будут считаны с диска заново. Обновятся только те изображения, которые будут учавствовать в поиске. Данный параметр игнорируется, если указан bufferIgnore=1. Значение по умолчанию: 0.

bufferIgnore=<0|1>
Флаг запрещающий работать с буфером. Данный из буфера считаны не будут, загрузка искомых изображений произойдет с диска. Никаких данных в буфер не сохраняется. Значение по умолчанию: 0.


Если каких замечаний нет, то можешь релизить, да тему почищу.

Сообщение отредактировал DarkMaster - 14.10.2017, 6:59


Прикрепленные файлы
Прикрепленный файл  FindString_1.0.4.zip ( 10,52 килобайт ) Кол-во скачиваний: 152
Прикрепленный файл  FindString_1.0.5.zip ( 10,53 килобайт ) Кол-во скачиваний: 140


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


**********

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



Цитата
Фикс: при передаче источника изображения (source) игнорировались координаты поиска.

Не поможет пока Кнайт не исправит этот баг. Или ничего не найдётся, или найдётся не то что надо.
Как временное решение: можно искать на всём скрине и удалить всё что не входит в указанную в crds область.
Цитата
Таймаут на прогрузку. Поиск для детекта изображений.

В этом блоке options.crds.abs тоже надо перенести в getimage.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.10.2017, 19:27
Сообщение #132


***********

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



Цитата
Не поможет пока Кнайт не исправит этот баг. Или ничего не найдётся, или найдётся не то что надо.

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


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


**********

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



Потестил этот баг.
1. Ищет не от левого верхнего угла, а от левого нижнего.
2. endX = endX - startX
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.10.2017, 7:51
Сообщение #134


***********

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



Ну переворачивать весь массив в обратную сторону смысла слава богу нет - сам перевернется при сортировке.
Координату костыль прилепил. В описании сделал пометку.


Прикрепленные файлы
Прикрепленный файл  FindString.lua_1.0.1.zip ( 9,69 килобайт ) Кол-во скачиваний: 152


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


**********

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



Начальную координату X нужно прибавлять к конечной, т. к. findimage её отнимет. С координатой X решилось, а вот с Y всё не так просто. Там такой же косяк с вычитанием начальной координаты, но даже не это главное. Ищет снизу, т. е получается вот такая фигня:
Прикрепленное изображение
В общем что-то там напутано с Y, я так и не понял до конца как оно ищет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.10.2017, 15:09
Сообщение #136


**********

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



Исправил:
Код
startX, startY, endX, endY = options.crds[1], 0, options.crds[3] + options.crds[1], height

Если передано изображение source, то по Y ищет на всём скрине.
Добавлен блок для удаления того что не входит в область указанную в crds.
Код
-- Удаление лишнего по Y если передано изображение source
-- Убрать после исправления бага FindImage, искал снизу вверх
if  options.source then
    for i = #crdsRaw, 1, -1 do
        if crdsRaw[i].y < options.crds[2] or crdsRaw[i].y > options.crds[4] then
            table.remove(crdsRaw, i)
        end
    end
end

Прикрепленный файл  FindString.lua_1.0.2.zip ( 10,04 килобайт ) Кол-во скачиваний: 206

В выходные ещё погоняю, если будет нормально, то можно будет в первый пост добавить.

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.10.2017, 23:16
Сообщение #137


**********

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



Цитата
Если передано изображение source, то по Y ищет на всём скрине.

В общем с координатой X тоже приколы какие-то, так что при передаче изображения source придётся искать на всем скрине, а потом лишнее удалять. Это я переделал.
Цитата
--Получение адреса в памяти загруженного в буфер изображения:
imageToString.buffer.get(<путь>)

А оно так работает?
Код
imageToString["buffer"]["get"]("C:\\l2number\\1.bmp")

Так нормально.
Цитата
--Получение текста из изображения:
t = imageToString.get({[parms],[parms],[parms],...})
Результат при поиске текста:
t = imageToString.get{[parms],[parms],[parms],...}

В одном случае со скобками (), в другом без.
Без скобок нормально работает. Или есть какая-то разница?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.10.2017, 6:19
Сообщение #138


***********

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



Цитата
Без скобок нормально работает. Или есть какая-то разница?

Разница том, что я уже за*бался с тем, что тут почему-то половина синтаксиса не работает, если начинаются сложные конструкции. Я так подозреваю это из-за crystal lua.
Там эти скобки нахрен не нужны в нормальном виде и квадратные с кавычками тоже. Надо убрать вложенность. Массив buffer{} сделать обратно префиксом типа bufferGet()


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


***********

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



Правок больше не будет? X, Y все поправлено? Переименовываю функции и все?


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


**********

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



Цитата
Правок больше не будет? X, Y все поправлено?

Вроде всё работает. X, Y подправил.
При передаче source ищет на всём скрине, что не входит в crds удаляется.
Исправлено:
Код
screenshot, width, height = options.source[1],options.source[2],options.source[3]
startX, startY, endX, endY = 0, 0, width, height   -- чтобы искало на всём скрине

Код
-- Если передано изображение source удаляем из crdsRaw всё что не входит в область crds
-- Убрать после исправления багов FindImage
if  options.source then
    for i = #crdsRaw, 1, -1 do
        if crdsRaw[i].y < options.crds[2] or crdsRaw[i].y > options.crds[4] or crdsRaw[i].x < options.crds[1] or crdsRaw[i].x > options.crds[3] then
            table.remove(crdsRaw, i)
        end
    end
    if  #crdsRaw < 1 then  
        return nil
    end
end
------------

Прикрепленный файл  FindString.zip ( 10,04 килобайт ) Кол-во скачиваний: 191
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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