OpenCV实时屏幕捕获将矩形放在ROI Python中的项目周围
嗨,我很难弄清楚,如何在我的实时屏幕捕获的ROI中显示的对象周围放置小矩形 通过OpenCV,我看到了在静态图像上进行模板匹配的示例,以及在网络摄像头的实时视频上进行级联的示例,我还看到了显示汽车在车道上行驶路线的视频示例 我正在寻找一个突出显示ROI中对象周围矩形的基本示例,最终有机会使用pyautogui单击这些项目 下面是到目前为止我的代码OpenCV实时屏幕捕获将矩形放在ROI Python中的项目周围,python,python-3.x,opencv,numpy,cv2,Python,Python 3.x,Opencv,Numpy,Cv2,嗨,我很难弄清楚,如何在我的实时屏幕捕获的ROI中显示的对象周围放置小矩形 通过OpenCV,我看到了在静态图像上进行模板匹配的示例,以及在网络摄像头的实时视频上进行级联的示例,我还看到了显示汽车在车道上行驶路线的视频示例 我正在寻找一个突出显示ROI中对象周围矩形的基本示例,最终有机会使用pyautogui单击这些项目 下面是到目前为止我的代码 #!python3 import numpy as np from PIL import ImageGrab import cv2 #import
#!python3
import numpy as np
from PIL import ImageGrab
import cv2
#import time
# define the region of interest function
def roi(img, vertices):
mask = np.zeros_like(img)
cv2.fillPoly(mask, vertices, 255)
masked = cv2.bitwise_and(img, mask)
return masked
# how the image is going to be processed
def process_img(original_image):
# convert it to grey
processed_img = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
# add thresholding
processed_img = cv2.Canny(processed_img, threshold1=150, threshold2=200)
# add blur
processed_img = cv2.GaussianBlur(processed_img, (3, 3), 0)
# Create a Region of Interest (ROI)
vertices = np.array([[200, 440], [200, 250], [200, 250], [450, 250], [450, 250], [450, 440]], np.int32)
processed_img = roi(processed_img, [vertices])
return processed_img
def main():
#last_time = time.time()
while True:
screen = np.array(ImageGrab.grab(bbox=(40, 420, 720, 1000)))
new_screen = process_img(screen)
#print('Loop took {} seconds'.format(time.time()-last_time))
#last_time = time.time()
cv2.imshow('game window', new_screen)
#cv2.imshow('window2', cv2.cvtColor(screen, cv2.COLOR_BGR2RGB))
if cv2.waitKey(25) & 0xFF == ord('q'): # press q to escape.
cv2.destroyAllWindows()
break
如果有人能填补这个空白,我觉得我很接近,但不太接近
提前感谢。您当前的代码有什么问题吗?您好,它不会选择周围有矩形的ROI中的项目我显然缺少选择周围有矩形的ROI中的对象的代码…您可以先在网络摄像头中检测到的人脸周围制作矩形,检测眼睛等。如果你愿意,我可以帮你。嗨,我已经达到了一定程度,但是我很难将代码从网络摄像头示例转换到实时屏幕录制。你当前的代码有什么问题?嗨,它不会选择周围有矩形的ROI中的项目我显然缺少在周围有矩形的ROI中选择对象的代码…您可以从在网络摄像头中检测到的人脸周围制作矩形开始,检测眼睛等。如果你愿意,我可以帮你。嗨,我已经达到了一定程度,但我很难将代码从网络摄像头示例转换到实时屏幕录制。