无法使用OpenCV创建基本视频文件

3 投票
1 回答
5604 浏览
提问于 2025-04-16 16:23

我正在尝试使用OpenCV(在Python中)创建一个基本的视频文件。我有以下代码,运行没有错误,但我没有看到输出文件被创建。我想知道有没有人能帮我找出问题出在哪里。

from cv import *
im1 = LoadImage("/home/spoll/laptop1.jpg")
im2 = LoadImage("/home/spoll/laptop2.jpg")

writer = CreateVideoWriter("/home/spoll/out", CV_FOURCC('F', 'L', 'V', '1'), 2, (im1.width, im1.height))
if writer is None:
    print "Error in creating video writer"
else:
    print WriteFrame(writer, im1)
    print WriteFrame(writer, im2)

谢谢!

1 个回答

3

你为什么不检查错误呢?如果 CreateVideoWriter() 出现问题,你就永远不知道了。

我觉得 CreateVideoWriter 可能返回了 NULL。你需要加上相应的代码来检查返回值,看看是不是这样。

如果真是这样,问题很可能出在 CV_FOURCC(),它找不到编码器。

然后,可以查看这个回答,了解其他编码器的情况: 在OpenCV中创建AVI文件

我还建议你把OpenCV更新到最新版本(我记得是v2.2)。

编辑

你在 CreateVideoWriter 中也缺少了最后一个参数:

#!/usr/bin/env python
import sys

from opencv.cv import *
from opencv.highgui import *

im1 = cvLoadImage("img1.jpg")
if not im1:
    print "Could not load im1"

im2 = cvLoadImage("img2.jpg")
if not im2:
    print "Could not load im2"

fps = 4.0
frame_size = cvGetSize(im1)
#writer = cvCreateVideoWriter("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, True)
writer = cvCreateVideoWriter("out.avi", CV_FOURCC('F', 'L', 'V', '1'), fps, frame_size, True)
if not writer:
    print "Error in creating video writer"
    sys.exit(1)
else:
    print cvWriteFrame(writer, im1)
    print cvWriteFrame(writer, im2)

cvReleaseVideoWriter(writer)

我觉得在OpenCV/Linux/Python中有关于 cvCreateVideoWriter() 的问题。我会尝试和开发者沟通,等我有回复后会在这里更新。

撰写回答