如何使用 opencv 和 python 在视频流上制作边框?

How to make a border on a video stream using opencv and python?

我正在使用 python 学习 opencv,我的视频 运行 完美地使用了 opencv,但我想在视频上制作边框。这是我迄今为止尝试过的方法,但没有奏效。

import cv2
import numpy as np
cam=cv2.VideoCapture(1)
waitTime=50
while (1):


    ret,frame=cam.read()
#cv2.copyMakeBorder(frame,1000,1000,1000,1000,cv2.BORDER_CONSTANT,value=[0,255,255])
    cv2.imshow("frame",frame)
    cv2.copyMakeBorder(frame,1000,1000,1000,1000,cv2.BORDER_CONSTANT,value=[0,200,200])
    #cv2.setMouseCallback('frame',draw)
    if  cv2.waitKey(waitTime) & 0xFF==ord('q'):
            break
cam.release()
cv2.destroyAllWindows()

问题是您将边框设置得太大 (1000),并且您没有指定要复制到哪个图像。它应该是这样的:

import cv2
import numpy as np
cam=cv2.VideoCapture(1)
waitTime=50

while (1):
    ret,frame=cam.read()
    cv2.imshow("frame",frame)
    borderedFrame = cv2.copyMakeBorder(frame,10,10,10,10,cv2.BORDER_CONSTANT,value=[0,200,200])
    cv2.imshow("bordered frame", borderedFrame)
    if  cv2.waitKey(waitTime) & 0xFF==ord('q'):
        break

cam.release()
cv2.destroyAllWindows()

您需要在copyMakeBorder之后调用imshow,并将带有边框的图像放入变量中:

frame = cv2.copyMakeBorder(frame,1000,1000,1000,1000,cv2.BORDER_CONSTANT,value=[0,200,200])
cv2.imshow("frame",frame)