使用python的OpenCV VideoWriter提供5.54kb文件

时间:2013-06-26 19:06:47

标签: python opencv video

我正在尝试使用OpenCV在python中创建一个TimeLapse创建者,并且具有以下代码:

import cv2
import os
import string

directory = (r"C:\Users\Josh\Desktop\20130216")
video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)

for filename in os.listdir(directory):
    if filename.endswith(".jpg"):
        video.write(cv2.imread(filename))

cv2.destroyAllWindows()
video.release()

该文件夹中有1,440张图片,但video.avi的大小仅为5.54kb,播放时输出为空。任何人都可以在我的代码中看到任何缺陷,并给我任何帮助吗?

3 个答案:

答案 0 :(得分:1)

似乎是,你有没有ffmpeg支持的窗户。 我遇到了同样的问题,OpenCV 2.4 VideoCapture not working on Windows帮助了我。

应将opencv246 \ opencv \ 3rdparty \ ffmpeg \ opencv_ffmpeg.dll复制到 C:\ Python27 \ opencv_ffmpeg246.dll

您的代码在代码中定义为1536x1536,因此您的所有.jpg文件都应与该大小匹配。

video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", 
cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)

答案 1 :(得分:0)

cv2.VideoWriter无法使用正确的代码保存视频内容的原因是输出视频的宽度,高度大小与输入视频的宽度,高度大小不同。

您需要匹配它们

答案 2 :(得分:0)

我遇到了同样的问题,因为输入视频大小(widthheight)不能算出输出文件。 我的显示6KB。

我相信这是因为openCV并非旨在执行此类工作(记录/保存视频

要解决此问题,只需匹配widthheight

width, height = frame.shape
out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width, height))