import numpy as np
import cv2
def save_to_vid(video):
path = ".../output.avi"
height , width , layers = video[0].shape
out = cv2.VideoWriter(path, cv2.cv.FOURCC("X", "V", "I", "D"),
20.0, (width, height))
for frame in frames:
out.write(frame)
out.release()
##CAPTURING SOME TEST FRAMES
cap = cv2.VideoCapture(0)
frames = list() #THIS IS YOUR VIDEO
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame = cv2.flip(frame,0)
frames.append(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
#SOMETIMES LATER IN THE RPOGRAM
doYouWantToSave = True
if doYouWantToSave:
save_to_vid(frames)
else:
del frames
1 回答
我现在得到你的意思,但是我认为这会以某种方式打破VideoWriter的目的 . 它的工作是在磁盘上写视频 . 但是,我同意,拥有一个可以在cv2中操作的Video类会更好 .
与此同时,对我们来说幸运的是,视频只是帧序列,而不是阵容 . 我们可以与那些人做很多事情,所以这里是我建议的一般想法:
当然,这一切都可以通过创建自己的类Video然后实例化并将其作为代码中的对象处理来更聪明地完成 . 视频也可以有一个方法“writeToFile” . 它甚至可以更智能地编写脚本以节省一些空间,或者作为实际缓冲区工作,如果这正是您所需要的 .