繁体   English   中英

无法使用 OpenCV python 保存视频

[英]Unable to save video using OpenCV python

我是计算机视觉的新手,我通过使用 Pillow 和 Skimage 库开始了我的图像处理之旅,而不是尝试使用 opencv 但是当我使用 opencv 进行视频处理时,我无法保存系统摄像头捕获的视频。

import cv2
import numpy as np
cam = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_write = cv2.VideoWriter('saved_out.avi', fourcc, 20.0, (640, 480))
while True:
    ret, frame = cam.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    video_write.write(frame)
    cv2.imshow('frame',frame)
    cv2.imshow('gray', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cam.release()
video_write.release()
cv2.destroyAllWindows()

您是否尝试过 mp4v 而不是 xvid? 以下适用于我(Windows):

writer = cv2.VideoWriter('out.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 20, shape)

如果这不起作用,您还可以尝试:

  1. 不要对视频尺寸进行硬编码,而是使用 frame.shape 来确保尺寸匹配。 如果他们不这样做,作者就无法编写框架。

    ret, frame = video.read() height, width = frame.shape[:2] shape = (width, height) video_write = cv2.VideoWriter('saved_out.avi',fourcc, 20.0, shape)

重要提示:如果您从 np 数组创建框架,请记住宽度和高度是倒置的。 星期六我在我的代码上调试了 2 个小时。

newFrame = np.zeros((height, width), dtype='uint8')
  1. 帧需要采用 BGR 格式(3 个通道)。 如果使用灰度图像,则在实例化您的编写器 object 时必须将标志 False 传递给颜色,如下所示:

    writer = cv2.VideoWriter('out.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 20, 形状, False)

文档:VideoWriter(文件名,fourcc,fps,大小,is_color)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM