Как подключить OpenCV к монитору

Рейтинг: 0Ответов: 2Опубликовано: 21.06.2023

Хочу отслеживать все, что происходит на рабочем столе и в приложениях. Видел множество примеров подключения к камерам, чтобы отслеживать объекты в потоке, но как отслеживать объекты на мониторе? Могу почитать мануалки, если такие есть.

Ответы

▲ 2Принят

python-opencv не позволяет так делать, но вы можете использовать к примеру mss (pip install mss):

from mss import mss
import numpy as np
import cv2 as cv
import time

with mss() as sct:
    rect = sct.monitors[0]
    while True:
        stime = time.time()
        sct_img = np.array(sct.grab(rect))
        cv.imshow('frame', sct_img)
        if cv.waitKey(1) == ord('q'):
            break
    cv.destroyAllWindows()
▲ 0

Предлагаю ознакомиться с API ScreenGear.

" ScreenGear разработан исключительно для сверхбыстрой трансляции экрана, что означает, что он может захватывать кадры с вашего монитора в режиме реального времени, либо определяя область на экране компьютера, либо в полноэкранном режиме, за счет незначительной задержки. ScreenGear также легко поддерживает захват кадров с нескольких мониторов, а также поддерживает несколько серверных частей. "

Вот пример использования с сайта abhitronix.github.io/vidgear

main.py

# import required libraries
from vidgear.gears import ScreenGear
import cv2

# open video stream with default parameters
stream = ScreenGear().start()

# loop over
while True:

    # read frames from stream
    frame = stream.read()

    # check for frame if Nonetype
    if frame is None:
        break

    # {do something with the frame here}

    # Show output window
    cv2.imshow("Output Frame", frame)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

# close output window
cv2.destroyAllWindows()

# safely close video stream
stream.stop()