如何使用 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)
我正在使用 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)