如何使用opencv python在视频的每一帧上绘制填充矩形

问题描述 投票:0回答:3

如果我想在视频的每一帧的左下角 (x1,y1) 和右上角 (x2,y2) 添加黑色填充矩形,我该怎么做?

python video-processing opencv
3个回答
2
投票

与 @muhammad-safwan 所说的类似,但这也应该可以帮助您将其放入视频的每一帧中:

您尚未向我们提供任何代码,但我假设它看起来与此类似(其中

cap
是您的视频捕获源):

while True:
    ret, image = cap.read()
    image = cv2.resize(image, (500, 500))
    
    # this is the part to add to your code
    cv2.rectangle(image, (0, 0), (200, 200), (0, 0, 0), -1)

    cv2.imshow("My Video", image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.destroyAllWindows()

使用

cv2.rectangle(image, (0, 0), (200, 200), (0, 0, 0), -1)
将矩形添加到视频中的每个帧(使用的变量是图像)。


1
投票

这是矩形的通用方法

image = cv2.rectangle(image, start_point, end_point, color, thickness)

在我们的例子中使用厚度作为

-1
来填充矩形

image = cv2.rectangle(image, (x1,y1), (x2,y2), (0,0,0), -1)

0
投票

很多人问这个是为了实时视频捕捉,所以我找不到具体的答案。希望这有帮助。

import cv2 
import numpy as np

cap = cv2.VideoCapture(0)

# running the loop 
while True: 

    # extracting the frames 
    ret, img = cap.read() 
  
    # converting to gray-scale 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    # Using cv2.rectangle() method 
    # Draw a rectangle with blue line borders of thickness of 2 px 
    image = cv2.rectangle(img, pt1=(2,2), pt2=(300,300),color=(200,200,200), thickness=20) 

    # Displaying the image 
    cv2.imshow('window_name', img)  
    # displaying the video 
    # exiting the loop 
    key = cv2.waitKey(1) 
    if key == ord("q"): 
        break

cap.release()
cv2.destroyAllWindows()
© www.soinside.com 2019 - 2024. All rights reserved.