我在OpenCV 2.3.1中使用32位python。我正在尝试将二维numpy数组写入opencv视频编写器。我的代码类似于:

import cv2 as cv
import numpy as np

fourcc = cv.cv.CV_FOURCC('D', 'I', 'V', 'X')
writer = cv.cv.CreateVideoWriter("test.mpg", courcc, 10, (256,256))
if not writer:
     print "Error"
     sys.exit(1)

for ii in range(numberOfFrames):
    numpy_image = GetFrame(ii)    #Gets a random image

    cv_image = cv.cv.CreateImage((256,256), cv.IPL_DEPTH_8U, 1)
    cv.cv.SetData(cv_image, numpy_image.tostring(), numpy_array.dtype.itemsize*1*256)

    cv.cv.WriteFrame(writer, cv_image)

del writer

我可以看到我的numpy数组中有适当的数据。而且,如果我尝试从iplImage读回数据,我仍然会看到它。但是,编写框架似乎无济于事。没有文件正在创建或引发任何错误。我可能做错了什么?提前致谢。

最佳答案

我从未使用过OpenCV,但是FWIW我通过将它们通过管道传送到Mencoder(基于VokkiCoder的VideoSinkhere)将numpy数组写入视频文件。它的速度非常快,而且似乎可以可靠地工作,并且还可以写入RGB视频。

Here's a paste。它还包括一个VideoSource类,用于使用非常相似的方法将电影文件读取为numpy数组。

关于python - 使用Python,OpenCV和numpy数组创建灰度视频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7716092/

10-12 21:21