我在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读取数据,我发现它仍然存在。但是,编写框架似乎没有做任何事情。没有文件正在生成或抛出任何错误。我能做错什么?提前谢谢。
答案 0 :(得分:1)
我从未使用过OpenCV,但是我通过将它们管道到mencoder(基于VokkiCoder的VideoSink
类here)将numpy数组写入视频文件。它非常快,似乎工作非常可靠,它也会写RGB视频。
Here's a paste。它还包括一个VideoSource
类,用于使用非常类似的方法将电影文件读取到numpy数组。