在我的项目中,我想保存流媒体视频。
import cv2;
if __name__ == "__main__":
camera = cv2.VideoCapture(0);
while True:
f,img = camera.read();
cv2.imshow("webcam",img);
if (cv2.waitKey (5) != -1):
break;
` 使用上面的代码,可以从网络摄像头流式传输视频。如何将此流媒体视频写入文件?
答案 0 :(得分:9)
您只需将抓取的帧保存到图像中即可:
camera = cv2.VideoCapture(0)
i = 0
while True:
f,img = camera.read()
cv2.imshow("webcam",img)
if (cv2.waitKey(5) != -1):
break
cv2.imwrite('{0:05d}.jpg'.format(i),img)
i += 1
或者像这样的视频:
camera = cv2.VideoCapture(0)
video = cv2.VideoWriter('video.avi', -1, 25, (640, 480));
while True:
f,img = camera.read()
video.write(img)
cv2.imshow("webcam",img)
if (cv2.waitKey(5) != -1):
break
video.release()
创建VideoWriter
对象时,需要提供几个可以从输入流中提取的参数。可以找到一个教程here。
答案 1 :(得分:2)
在ubuntu中使用以下代码从给定图片创建视频
os.system('ffmpeg -f image2 -r 8 -i %05d.bmp -vcodec mpeg4 -y movie3.mp4')
图片名称为00000.bmp,00001.bmp,00002.bmp等。
答案 2 :(得分:1)
如果你真的想使用为你的电脑提供的编解码器压缩帧。
cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]])
设置-1
的第二个参数。这将允许您查看电脑中使用的编解码器压缩列表。将此信息设置如下
fourcc = cv2.cv.CV_FOURCC('I','Y','U','V')
# or
fourcc = cv2.cv.CV_FOURCC('I','4','2','0')
# settting all the information
out = cv2.VideoWriter('output1.avi',fourcc, 20, (640,480))
对于其他一切,您可以使用Ekalic提供的代码