python-OpenCV VideoWriter输出为空

Mis*_*M23 4 python opencv fourcc

我最近开始使用opencv-python进行编程,但是当我尝试使用cv2编写视频时遇到了麻烦。脚本的输出为空。这是我的代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

cap = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc(*'h263')
out = cv2.VideoWriter('cv2_camera_output.mp4',fourcc, 20.0, (800,600))


while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', frame)
    cv2.imshow('gray', gray)
    out.write(frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break


cap.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我猜想这个问题与fourcc编解码器有关。所以我用谷歌搜索是否有适用于mac的fourCC编解码器(我正在使用OS X 10.12.3(Sierra)),但所有建议均不适用于我的计算机,因此问题甚至可能不在fourCC编解码器中。这些是我访问过的链接:

OpenCV文档(我没有遵循这个文档,只是为了确保它也没有用)

GitHub在OS X上测试FourCC编解码器

有人知道真正的问题吗?任何帮助都会很棒

ROA*_*OAR 8

框架的宽度和高度必须与的宽度和高度相同VideoWriter。只需在此之前添加即可out.write(frame),您可能会很好:

frame = cv2.resize(frame,(800,600))
Run Code Online (Sandbox Code Playgroud)

或将您的尺寸更改VideoWriter为网络摄像头框架的初始尺寸。我的是(640,480)。我认为,如果您的操作系统不支持该格式,那么它将什么都不会写。甚至不会创建一个空文件。我在Linux上,我认为'h263'不能在其上运行,但是'h264'可以。当我使用“ h263”时,它不会生成任何文件。


Mis*_*M23 7

我解决了这个问题。问题只是我不能将 VideoWriter 用于灰度,所以我不得不将它用于彩色帧。