python画图视频_如何在视频文件的第一帧上画图,然后继续显示整个视频
我在python中使用opencv庫。我打開了一個現有的視頻文件,并編寫了一個小腳本,允許我在視頻的任何地方畫一個矩形。問題是:我想在視頻的第一幀上畫一個矩形,然后把它留在那里為我標記一個感興趣的區域。在
我正在使用cv2.imshow(winname, frame)顯示我的視頻。因為它每秒以非常高的幀速率運行/顯示視頻(我不想改變它,因為我的視頻很長),當我開始繪制矩形時,已經顯示了許多幀。在
因為我認為這可能有幫助,下面是我目前為止的代碼:
進口cv2#mouse callback function#
def draw_rectangle(event, x, y, flags, param):
global pt1, pt2, topLeft_clicked, bottomRight_clicked
#mouse click
if event == cv2.EVENT_LBUTTONDOWN:
#reset
if topLeft_clicked and bottomRight_clicked:
topLeft_clicked = False
bottomRight_clicked = False
pt1 = (0,0)
pt2 = (0,0)
#get coordinates of top left corner
if not topLeft_clicked:
pt1 = (x,y)
topLeft_clicked = True
#get coordinates of bottom right corner
elif not bottomRight_clicked:
pt2 = (x,y)
bottomRight_clicked = True
#start actual program
#initially we haven't drawn anything
pt1 = (0,0)
pt2 = (0,0)
topLeft_clicked = False
bottomRight_clicked = False
#capture video
cap = cv2.VideoCapture('Path to video')
cv2.namedWindow(winname='myName')
cv2.setMouseCallback('myName', draw_rectangle)
firstFrame = True
while True:
ret, frame = cap.read()
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
while ret and firstFrame:
cv2.imshow('myName', gray_frame)
if topLeft_clicked:
cv2.circle(gray_frame, center=pt1, radius=5, color=(255,0,0), thickness=-1)
if topLeft_clicked and bottomRight_clicked:
cv2.rectangle(gray_frame, pt1, pt2, (255,0,0), 2)
firstFrame = False
cv2.imshow('Estimate_Velocity', gray_frame)
if cv2.waitKey(1) &0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
總結
以上是生活随笔為你收集整理的python画图视频_如何在视频文件的第一帧上画图,然后继续显示整个视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python可以制作网站吗_Python
- 下一篇: python超时退出进程_Python如