Python (pyautogui) отлавливать происходящее на экране

Как отлавливать происходящее на экране быстро?

import pyautogui
template = pyautogui.locateOnScreen('screen.png')
print(template)

Работает очень долго. Я хочу делать скриншот экрана и проверять, есть ли на нем нужные мне фрагменты изображения. Есть какие-то более быстрыые способы?


Ответы (1 шт):

Автор решения: rplfv

Этот код работает быстрее, он закрашивает найденное изображение на картинке. Как мне сделать проверку и если элемент есть - print(1), а если нет print(2)

import cv2

method = cv2.TM_SQDIFF_NORMED

small_image = cv2.imread('screen.png')
large_image = cv2.imread('my_screenshot.png')

result = cv2.matchTemplate(small_image, large_image, method)

mn,_,mnLoc,_ = cv2.minMaxLoc(result)

MPx,MPy = mnLoc

trows,tcols = small_image.shape[:2]
h = (MPx + tcols//2)
v = (MPy + trows//2)

cv2.line(large_image, (MPx, (MPy+MPy+trows)//2), (MPx+tcols, (MPy+MPy+trows)//2), (0,255,255), thickness=20, lineType=8, shift=0)
cv2.imshow('one', large_image)
cv2.imwrite('one.jpg', large_image)

cv2.waitKey(0)
→ Ссылка