Сравнение и подгонка матриц.

ArtoCodes

Новичок
Пользователь
Янв 26, 2022
4
1
3
Доброго времени суток знатоки. Помогите советом или идеей.
Кратко о задаче. Пишу простенького бота (игрового) основанного на компьютерном зрении.
Научился качественно вычищать игровую миникарту от мусора, использовать поиск пути и т. д...

Ступор произошел, на моменте, когда персонаж перемещается по локации и соответственно меняется положение миникарты (по которой ориентируется бот).
Т. е. он каждую секунду времени делает скрин, вычищает миникарту от шума и приобразует в массив нулей и единиц (где соответственно ноль и один = черный и белый пиксель).

Но при получении следующей картинки, мне получается нужно склеить её с предыдущей (склеить матрицу) причем соблюдая старый патерн (т. е. понять на сколько сместилась карта и найти нужное положение для совмещения).
Как вы понимаете, поиск картинки в картинке не очень тут подходит, так как то что поступает в новом изображении лишь частично содержится в большом изображении.

Моя идея заключается в том, чтоб бот по мере исследования локации собирал общую матрицу карты, на которой уже и осуществляется поиск пути и далее передаётся управление на мышу.

Подскажите советом в какую сторону капать или что почитать можно на эту тему? Может какие готовые решения есть?

Формат уже вычищенного одного кадра (матрицы миникарты) примерно выглядит так:
 

Вложения

  • blankmap.png
    blankmap.png
    1,9 КБ · Просмотры: 4
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
У grab_screen нерабочая ссылка на документацию, не смог почитать, но все-таки оставлю тут скриншотер которым пользуюсь, вдруг пригодится
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
933
208
43
20
Москва
Могу предположить, что если карта двигается не очень быстро, можно попробовать накладывать новый кадр на старый с разным сдвигом, при совпадении на 90%+ считать наложение удачным и подклеивать

P.S. Подскажи, какие библиотеки используешь? Скриншот области с обработкой через PIL и numpy или что-то другое, типа OpenCV?
 

ArtoCodes

Новичок
Пользователь
Янв 26, 2022
4
1
3
P.S. Подскажи, какие библиотеки используешь? Скриншот области с обработкой через PIL и numpy или что-то другое, типа OpenCV?
Код:
# main
import numpy as np
import cv2
import sys
import time
from math import cos,sin,radians,ceil
from grabscreen import grab_screen

# pathFinding
from pathfinding.core.diagonal_movement import DiagonalMovement
from pathfinding.core.grid import Grid
from pathfinding.finder.a_star import AStarFinder

# win api
import win32api
import win32gui
import win32con
import pyautogui

# function
from function import borders, find_nearest_white

maskSize = 120
# miniSize = 270
# mapSize = 270

miniSize = 223
mapSize = 1600
 
  • Мне нравится
Реакции: Vershitel_sudeb

ArtoCodes

Новичок
Пользователь
Янв 26, 2022
4
1
3
У grab_screen нерабочая ссылка на документацию, не смог почитать, но все-таки оставлю тут скриншотер которым пользуюсь, вдруг пригодится
Это собственный модулёк... Ничего особенного, просто скриптик вынесен в отдельный файл
 

ArtoCodes

Новичок
Пользователь
Янв 26, 2022
4
1
3
Могу предположить, что если карта двигается не очень быстро, можно попробовать накладывать новый кадр на старый с разным сдвигом, при совпадении на 90%+ считать наложение удачным и подклеивать
Попробую что-нить такое
 

Форум IT Специалистов