Как правильно распределить элементы по списку. OpenCV
import win32gui
import win32api
import win32ui
import win32con#3211922
import cv2
from PIL import Image
from ctypes import windll
import numpy as np
from matplotlib import pyplot as plt
hwnd = win32gui.FindWindow(None, 'Игра')
left, top, right, bot = win32gui.GetWindowRect(hwnd)
w = right - left
h = bot - top
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
saveDC.SelectObject(saveBitMap)
result = windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 0)
bmpinfo = saveBitMap.GetInfo()
bmpstr = saveBitMap.GetBitmapBits(True)
im = Image.frombuffer(#Изображение экрана
'RGB',
(bmpinfo['bmWidth'], bmpinfo['bmHeight']),
bmpstr, 'raw', 'BGRX', 0, 1)
win32gui.DeleteObject(saveBitMap.GetHandle())
saveDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.ReleaseDC(hwnd, hwndDC)
im.save("test.png")
#######################
lest = ['rock','klab','meloman','yrban','gold','gray','block']#элементы которые ищу
img_rgb = cv2.imread('test.png')#Изображение экрана
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
coordinates = []
for n in range(len(lest)):
template = cv2.imread(f'images/{lest[n]}.jpg',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.98#раньше использовал pyautogui похоже на confidence вроде
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
try:
a = coordinates[-1][0]
b = pt[0]+w
hu = b - a
if hu < 0:
hu = hu * -1
except:
hu = 6
if hu > 5:#по 3-4 раза обводились элементы с разницей в 1 пиксель вот мой костыль хотя может и лишнее
coordinates.append((pt[0]+w,pt[1]+h))
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 1)
#print(pt[0]+w,pt[1]+h)
cv2.imwrite('res.png',img_rgb)
В чем проблема. Без понятия как правильно сделать 8 listов где все элементы по полочкам и можно считать так же нужно некоторые элементы которые не нашлись из-за анимации в игре искать повторно, что тоже трудность. Помогите пожалуйста начинающему разобраться в этой куче мала. Заранее спасибо
