【问题标题】:Unable to save video using OpenCV python无法使用 OpenCV python 保存视频
【发布时间】:2020-04-07 09:49:24
【问题描述】:

我是计算机视觉的新手,我使用 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()

【问题讨论】:

  • 您的网络摄像头图像的分辨率是多少?
  • 这是我的网络摄像头的详细信息 网络摄像头名称:HP 高清摄像头质量评级:476 帧速率:17 FPS 流类型:视频图像模式:rgb 网络摄像头百万像素:0.92 MP 网络摄像头分辨率:1280×720视频标准:高清宽高比:1.78 PNG 文件大小:1.35 MB JPEG 文件大小:724.01 kB 比特率:12.06 MB/s 颜色数:209890
  • 我已经尝试使用 'h, w = frame.shape[:2]' 来获得实际分辨率
  • 尝试使用实际分辨率没有帮助?
  • 是的,我尝试了实际分辨率。

标签: python opencv visual-studio-code video-processing


【解决方案1】:

你试过用 mp4v 代替 xvid 吗?以下对我有用(Windows):

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

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

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

    ret, frame = video.read() 高度,宽度 = frame.shape[:2] 形状=(宽度,高度) video_write = cv2.VideoWriter('saved_out.avi',fourcc, 20.0, shape)

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

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

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

Docs: VideoWriter(​filename,fourcc, fps, size, is_color​)

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2020-08-21
    • 2023-01-19
    • 2020-07-09
    • 2018-03-04
    相关资源
    最近更新 更多