Я хочу, чтобы это выполняло конкретное c действие, когда отслеживаемый объект или обнаруженное движение выходит за определенные границы. - PullRequest
0 голосов
/ 19 июня 2020

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

Этот код работает идеально для меня Я отслеживал цель с точностью 90%, теперь мне просто нужно держать ее в назначенной области с помощью левой кнопки мыши, это мини-игра для лучшего слов

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

import cv2
from mss.linux import MSS as mss
from PIL import Image
import time
import pyautogui as pg
import cv2
import mss
import numpy

template = cv2.imread("matchingfloat.JPG", cv2.IMREAD_GRAYSCALE)
w, h = template.shape[::-1]

with mss.mss() as sct:
    monitor = {"top": 40, "left": 0, "width": 800, "height": 640}

    while "Screen capturing":
        last_time = time.time()
        img = numpy.array(sct.grab(monitor))
        cv2.imshow("OpenCV/Numpy normal", img)
        print("fps: {}".format(1 / (time.time() - last_time)))
        gray_frame = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        res = cv2.matchTemplate(gray_frame, template, cv2.TM_CCOEFF_NORMED)
        loc = np.where(res >= 0.60)
        for pt in zip(*loc[::-1]):
            cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 255, 0), 3)
        cv2.imshow("Frame", img)
        key = cv2.waitKey(1)
        if cv2.waitKey(25) & 0xFF == ord("q"):
            cv2.destroyAllWindows()
            break



...