初学者学习OpenCV Python的时候肯定会调用摄像头保存视频,有不少初学者会遇到使用OpenCV Python保存的视频使用播放器打不开,而且保存下来的视频很小往往只有几百个字节。
# -*- coding:utf-8 -*-
import cv2
if __name__ == '__main__':
# 设置编码方式
fourcc = cv2.VideoWriter_fourcc(*'avc1')
# 采用摄像头获取图像
video = cv2.VideoCapture(0)
# width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
result = cv2.VideoWriter('./video/save_vidoe.mp4', fourcc, 30, (800, 400))
# 判断是否成功创建视频流q
while video.isOpened():
ret, frame = video.read()
if ret is True:
# 将每帧图像进行水平翻转
frame = cv2.flip(frame, 1)
# 将每一帧写入视频
result.write(frame)
cv2.imshow('Video', frame)
cv2.waitKey(25)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
video.release()
result.release()
cv2.destroyAllWindows()
这个BUG很可能是保存的视频宽高与摄像头捕获的视频宽高不一致所导致,我们只需在cv2.VideoWriter函数中把保存视频的宽高设置我们摄像头捕获视频的宽高。在上述代码中修改以下两句即可。
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
result = cv2.VideoWriter('./video/save_vidoe.mp4', fourcc, 30, (width, height))
我们再次运行代码,发现所保存的视频能够正常打开。BUG成功解决!