在 python 中使用 OpenCV 2.4.0 创建视频

Posted

技术标签:

【中文标题】在 python 中使用 OpenCV 2.4.0 创建视频【英文标题】:Creating a video using OpenCV 2.4.0 in python 【发布时间】:2013-01-04 14:40:48 【问题描述】:

我正在尝试在python 2.7.2 中使用OpenCV 2.4.0 创建视频。但avi 文件大小为0。

我的代码:

from cv2 import *

im1 = cv.LoadImage("1.jpg")

fps = 20
frame_size = cv.GetSize(im1)

#writer = cv.CreateVideoWriter("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, True)

v = VideoWriter()

v.open("out.avi", cv.CV_FOURCC('F', 'M', 'P', '4'), fps, (800,600), True)
print v.isOpened()

isOpened() 总是返回 false

再试一次:

#!/usr/bin/env python
import sys

from cv2 import *

im1 = cv.LoadImage("1.jpg")

if not im1:
    print "Error loading image"

im2 = cv.LoadImage("2.jpg")

if not im1:
    print "Error loading image"

fps = 20
frame_size = cv.GetSize(im1)

writer = cv.CreateVideoWriter("out.avi", cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, True)

if not writer:
    print "Error in creating video writer"
    sys.exit(1)
else:
    cv.WriteFrame(writer, im1)
    cv.WriteFrame(writer, im2)

del writer

没有错误,但输出为空。

我错过了什么?

【问题讨论】:

我之前没有使用过OpenCV,但我猜你需要在编写完成后调用python相当于this function。 相关:***.com/questions/6918995/opencv-error-on-python @AshwiniChaudhary 我已经检查了 SO 中的所有问题,但没有任何效果。另外,我尝试了del writer,仍然没有。好像我错过了一些编解码器,也许。 我遇到了类似的问题,我猜作者可能有错误。 【参考方案1】:
height, width, layers = img.shape
out = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"XVID"), 30,(width,height))
out.write(img)
out.release()

【讨论】:

不正确答案:cv2 2.4.0 没有属性'VideoWriter_fourcc'【参考方案2】:

找到了这个代码,它对我有用(产生有色噪声):

writer = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"MJPG"), 30,(640,480))
for frame in range(1000):
    writer.write(np.random.randint(0, 255, (480,640,3)).astype('uint8'))
writer.release()

来源:https://github.com/ContinuumIO/anaconda-issues/issues/223#issuecomment-285523938

【讨论】:

【参考方案3】:
import cv2

img1 = cv2.imread('1.jpg')
img2 = cv2.imread('2.jpg')
img3 = cv2.imread('3.jpg')

height , width , layers =  img1.shape

video = cv2.VideoWriter('video.avi',-1,1,(width,height))

video.write(img1)
video.write(img2)
video.write(img3)

cv2.destroyAllWindows()
video.release()

您想要做的事情的简单代码。详情here

【讨论】:

我得到:AttributeError: 'cv2.VideoWriter' 对象没有属性 'release'

以上是关于在 python 中使用 OpenCV 2.4.0 创建视频的主要内容,如果未能解决你的问题,请参考以下文章

yum 安装OpenCv 怎么没有头文件

OpenCV 2.4 C++ 中的 chamferMatching 文档

如何在 Python 中使用 OpenCV?

OpenCV 二进制部署 (Linux)

如何在Python中使用OpenCV的

在 python 中使用 OpenCV 分割图像