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

> Findimage из файла
Tindome
сообщение 6.5.2026, 13:01
Сообщение #1


**

Neophyte
Сообщений: 41
Регистрация: 16.10.2014
Группа: Пользователи
Наличность: 21
Пользователь №: 17.059



Можно ли искать шаблон не на экране а на заранее сделанном скрине ?
что-то типа:

local found = findimage(0, 0, width, height, main_image, template, acc)

где templates - предварительно сохраненный шаблон,
main_image - скриншот сделанный UO, сохраненный на диск и затем загруженный в память

width, height размеры main_image высчитанные как width = x2 - x1 и height = y2 - y1 от тех координат что задавались при создавании скриншота.
ну и acc - точность поиска.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 7.5.2026, 9:29
Сообщение #2


***********

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



Цитата
log(err) передает 100

Значит нашел с точностью совпадения 100%


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tindome
сообщение 7.5.2026, 9:56
Сообщение #3


**

Neophyte
Сообщений: 41
Регистрация: 16.10.2014
Группа: Пользователи
Наличность: 21
Пользователь №: 17.059



Цитата(DarkMaster @ 7.5.2026, 9:29) *

Значит нашел с точностью совпадения 100%


у меня код сейчас выглядит вот так:

код

Код
--lua

-- Базовый путь к папке с изображениями
local base_path = "D:/Games/uopilot/Scrin/ST/"

-- Инициализируем массив имён файлов
local file_names = {
    "Atk140_Chcrit12.bmp",
    "atk150_uklon12.bmp",
    "top_sniper.bmp",
    "top_crit.bmp"
}

-- Формируем массив полных путей (он же будет использоваться для поиска)
local image_paths = {}
for i = 1, #file_names do
    image_paths[i] = base_path .. file_names[i]
end

-- Отладочная информация
log("Количество файлов: " .. #image_paths)

-- Проверяем результат
log("Пути сформированы:")
for j = 1, #image_paths do
    log(j .. ": " .. image_paths[j])
end

-- Объявляем точность поиска, ограничение найденого и погрешность оттенка
local acc = 70
local count = 5
local dev = 5

--Определяем точки захвата основного изобра
local x1, y1 = 0, 0
local x2, y2 = 1920, 1080

-- Захватываем область экрана и сохраняем как 1_scrinshot.bmp
local scr1 = getimage(x1, y1, x2, y2)

-- Проверка захвата
if scr1 == 0 then
    log("Ошибка захвата экрана. Завершаем выполнение.")
    return
end

-- Сохраняем
local save_path = base_path .. "1_scrinshot.bmp"
local success = saveimage(scr1, save_path)
if not success then
    log("Ошибка: не удалось сохранить скриншот")
    deleteimage(scr1)
    return
end

-- Безопасное освобождение памяти: проверяем, что слот существует
if scr1 ~= 0 then
    deleteimage (scr1)
end

-- Загружаем сохранённое изображение для поиска в нём
local main_image = loadimage(save_path)
if not main_image then
    log("Ошибка: не удалось загрузить сохранённое изображение")
    return
end

-- Получаем размеры основного изображения
local width = x2 - x1
local height = y2 - y1

-- Основной цикл поиска шаблонов в сохраненном файле
while #image_paths > 0 do
    log("Осталось проверить: " .. #image_paths .. " изображений")
    local found_any = false

    for j = #image_paths, 1, -1 do
        local template = loadimage(image_paths[j])
        log("Загружен" .. template)
        if not template then
            log("Ошибка загрузки шаблона: " .. image_paths[j])
            table.remove(image_paths, j)
        else
            local found, err = findimage(0, 0, width, height, {template}, main_image, acc, count, dev)
            log(found, err)
            if found > 0 then
                -- Получаем координаты центра найденного изображения
                local found_x = getfoundx()
                local found_y = getfoundy()
                log("Найдено: " .. image_paths[j] .. " в сохранённом файле")
                log("Координаты в файле: x=" .. found_x .. ", y=" .. found_y)
                table.remove(image_paths, j)
                found_any = true
                deleteimage(template)
                break  -- Выходим после первого найденного
            else
                log("не вижу")
                deleteimage(template)
            end
        end
        wait(300)
    end

    if not found_any then
        log("Все оставшиеся изображения не найдены. Завершаем поиск.")
        break
    end
    wait(500)
end

log("Поиск завершён. Осталось изображений: " .. #image_paths)



при условии "if found > 0 then"
код вываливается в ошибку:
9:49:21 1 (SHT1.txt, 0): Количество файлов: 4
9:49:21 1 (SHT1.txt, 0): Пути сформированы:
9:49:21 1 (SHT1.txt, 0): 1: D:/Games/uopilot/Scrin/ST/Atk140_Chcrit12.bmp
9:49:21 1 (SHT1.txt, 0): 2: D:/Games/uopilot/Scrin/ST/atk150_uklon12.bmp
9:49:21 1 (SHT1.txt, 0): 3: D:/Games/uopilot/Scrin/ST/top_sniper.bmp
9:49:21 1 (SHT1.txt, 0): 4: D:/Games/uopilot/Scrin/ST/top_crit.bmp
9:49:21 1 (SHT1.txt, 0): Осталось проверить: 4 изображений
9:49:21 1 (SHT1.txt, 0): Загружен67007328
9:49:21 1 (SHT1.txt, 0): nil 0
9:49:22 1 (SHT1.txt, 0): a runtime error.
86: attempt to compare number with nil
--lua

если условие сделать "if found and found.x and found.y then"
код отрабатывает но ничего не видит
9:55:32 1 (SHT1.txt, 0): Количество файлов: 4
9:55:32 1 (SHT1.txt, 0): Пути сформированы:
9:55:32 1 (SHT1.txt, 0): 1: D:/Games/uopilot/Scrin/ST/Atk140_Chcrit12.bmp
9:55:32 1 (SHT1.txt, 0): 2: D:/Games/uopilot/Scrin/ST/atk150_uklon12.bmp
9:55:32 1 (SHT1.txt, 0): 3: D:/Games/uopilot/Scrin/ST/top_sniper.bmp
9:55:32 1 (SHT1.txt, 0): 4: D:/Games/uopilot/Scrin/ST/top_crit.bmp
9:55:32 1 (SHT1.txt, 0): Осталось проверить: 4 изображений
9:55:32 1 (SHT1.txt, 0): Загружен67007328
9:55:32 1 (SHT1.txt, 0): nil 0
9:55:32 1 (SHT1.txt, 0): не вижу
9:55:33 1 (SHT1.txt, 0): Загружен67776456
9:55:33 1 (SHT1.txt, 0): nil 0
9:55:33 1 (SHT1.txt, 0): не вижу
9:55:33 1 (SHT1.txt, 0): Загружен67007328
9:55:33 1 (SHT1.txt, 0): nil 0
9:55:33 1 (SHT1.txt, 0): не вижу
9:55:33 1 (SHT1.txt, 0): Загружен139336832
9:55:33 1 (SHT1.txt, 0): nil 0
9:55:33 1 (SHT1.txt, 0): не вижу
9:55:34 1 (SHT1.txt, 0): Все оставшиеся изображения не найдены. Завершаем поиск.
9:55:34 1 (SHT1.txt, 0): Поиск завершён. Осталось изображений: 4

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

Сообщений в этой теме
Tindome   Findimage из файла   6.5.2026, 13:01
DarkMaster   Loadimage (Lua) Описание loadimage - функц...   6.5.2026, 15:30
Tindome   Loadimage (Lua) Описание loadimage - функ...   6.5.2026, 17:57
DarkMaster   приношу извинения. Я ошибочно прочитал ваше изнача...   6.5.2026, 18:51
Tindome   приношу извинения. Я ошибочно прочитал ваше изнач...   6.5.2026, 22:52
DarkMaster   потому, что когда создавался синтаксис, предполаг...   7.5.2026, 6:04
Tindome   потому, что когда создавался синтаксис, предполаг...   7.5.2026, 8:55
DarkMaster   И какой тут процент генерации АИ? 99? На кой черт ...   7.5.2026, 10:14
Tindome   И какой тут процент генерации АИ? 99? На кой черт...   7.5.2026, 10:26
DarkMaster   я про выдуманные функции и явно кривые решения кот...   7.5.2026, 10:29
Madeus   Путь до изображений не правильно задан.   7.5.2026, 11:21
Tindome   Путь до изображений не правильно задан. Ты про ...   7.5.2026, 11:53
Tindome   Ты про форвард слеш ? Допустил что УО не нравит...   7.5.2026, 12:55
Madeus   address, width, height, length = loadimage ([[C:...   7.5.2026, 13:15
Tindome   address, width, height, length = loadimage ([[C:...   7.5.2026, 13:29
DarkMaster   insert это образец AI мусора. t[#t+1] = so...   7.5.2026, 13:17
Tindome   insert это образец AI мусора. [code]t[#t+1...   7.5.2026, 13:40
DarkMaster   вам insert вообще не нужен в данном случае. смотри...   7.5.2026, 13:32
Tindome   вам insert вообще не нужен в данном случае. смотр...   7.5.2026, 14:30
Tindome   так у меня и так это есть: local image_paths = {}...   7.5.2026, 15:04
DarkMaster   :D я даже знаю кто это писал (не я). Человек сде...   7.5.2026, 16:02


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

 

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