2

我正在尝试使用 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,播放时输出为空。任何人都可以看到我的代码中的任何缺陷并给我任何帮助吗?

4

3 回答 3

4

我有同样的问题,因为输入视频大小(widthheight)与输出文件不匹配。我的显示6KB。

我相信这是因为 openCV 不打算做这种工作(记录/保存视频

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

width, height = frame.shape
out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width, height))
于 2020-08-16T10:23:44.860 回答
1

似乎是,你有没有 ffmpeg 支持的窗口。我遇到了同样的问题,OpenCV 2.4 VideoCapture 无法在 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)
于 2013-08-14T20:24:00.917 回答
0

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

你需要匹配他们

于 2020-03-17T14:35:18.383 回答