【问题标题】:Creating greyscale video using Python, OpenCV, and numpy arrays使用 Python、OpenCV 和 numpy 数组创建灰度视频
【发布时间】:2011-10-10 16:53:44
【问题描述】:

我在 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 读取数据,我会发现它仍然存在。但是,编写框架似乎没有做任何事情。没有文件被制作或抛出任何错误。我可能做错了什么?提前致谢。

【问题讨论】:

  • 这个 sn-p 看起来不完整。 GetFrame 来自哪里(应该是 cv.cv.GetFrame)?您对此代码的导入是什么?
  • GetFrame 是一个单独的函数,我从中获取图像。它与 cv.cv.GetFrame() 无关。
  • 面临与 cv2 和 numpy 矩阵类似的问题,它没有给我任何错误,但它没有将任何内容写入文件!!!!

标签: python opencv numpy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2018-10-06
    • 2013-01-04
    • 2017-08-20
    相关资源
    最近更新 更多