1.一些新的API
cv2.VideoWriter_fourcc()
fourcc = cv.VideoWriter_fourcc(*'mp4v')
这是创建视频保存器所需要的第二个参数,其中*‘mp4v’代表需要保存的是.mp4类型的文件。如果想要保存.avi类型的文件,则需要把这个参数改成*'XVID'
cv2.VideoWriter()
vw = cv.VideoWriter("runs/vedio/out1.mp4",fourcc,20,(640,480))
创建一个视频保存器,与视频截取器相似,它的功能是可以利用write()函数读取一帧一帧的图片,将其合成视频,并保存在对应的路径下。其中"runs/vedio/out1.mp4"代表要将视频保存下来的路径以及文件名,fourcc是上面创建的一个变量,代表保存下来的视频的一些属性,20代表帧率,但是这个参数起不到决定保存下来的视频的帧率的作用,实际上真正起到决定视频帧率作用的是后续每隔多少毫秒write()一张图片。(640,480)代表视频的分辨率,一定要严格与要保存的视频的分辨率相同,不然肯定是保存不下来的,一般电脑的摄像头的分辨率是640*480。
videowriter.write()
2.完整代码
import cv2 as cv
#创建视频截取器
cap = cv.VideoCapture(0)
#这个是视频保存器所需要的第二个参数,是按什么方式保存视频,如果是avi就是XVID
fourcc = cv.VideoWriter_fourcc(*'mp4v')
#创建视频保存器 参数:文件路径,保存方式,帧率(没用),分辨率(一定要严格和电脑自带的摄像头的分辨率相同)
vw = cv.VideoWriter("runs/vedio/out1.mp4",fourcc,20,(640,480))
while cap.isOpened():
ret,fream = cap.read()
if not ret:
break
else:
cv.imshow("video",fream)
vw.write(fream)#只是增加了这一步
if cv.waitKey(1000//20) == ord('q'):#两个下划线是向下取整,因为waitKey只能接收整形
break
cap.release()
vw.release()
cv.destroyAllWindows()