我想在保存的视频中绘制一个矩形。绘制矩形时,视频必须冻结。我成功地在图像上绘制了一个矩形,但我不知道如何使用opencv和python在保存的视频上执行相同操作。
答案 0 :(得分:1)
我需要使用opencv的ROI选择机制,我终于想出了如何实现它。
可以在此处找到实施(opencvdragrect)。它使用opencv 3.1.0和Python 2.7
对于已保存的视频,直到您没有阅读另一帧并显示该视频时,该视频才会被视为已暂停。
就如何将其添加到暂停的视频(框架)而言,下面的代码可能有所帮助。
import cv2
import selectinwindow
wName = "select region"
video = cv2.VideoCapture(videoPath)
while(video.isOpened()):
# Read frame
ret, RGB = video.read()
frameCounter += 1
if frameCounter == 1 : # you can pause any frame you like
rectI = selectinwindow.dragRect
selectinwindow.init(rectI, I, wName, I.shape[1], I.shape[0])
cv2.namedWindow(wName)
cv2.setMouseCallback(wName, selectinwindow.dragrect, rectI)
while True:
# display the image
cv2.imshow(wName, rectI.image)
key = cv2.waitKey(1) & 0xFF
# if returnflag is set break
# this loop and run the video
if rectI.returnflag == True:
break
box = [rectI.outRect.x,rectI.outRect.y,rectI.outRect.w,rectI.outRect.h]
# process the video
# ...
# ...
在(opencvdragrect)库中,使用双击停止矩形选择过程并继续视频。
希望这有帮助。