python - OpenCV VideoWriter:播放视频的问题

标签 python opencv video python-2.7 numpy

问题:我在正确渲染/播放由OpenCV的视频编写器创建的视频时遇到问题。

详细信息:Python不会吐出任何错误,而是可以成功播放/创建视频。当我尝试使用VLC播放视频时,似乎VLC尝试播放空视频(时间长度为00:00)。此外,视频大小仅为5kbs。我已经将此函数与其他NumPy图像数组一起使用,并且它们已经起作用。

我的NumPy阵列准备代码:

for i in range(len(frames)-1):
    fig = PIV.runPIV(frames[i].astype(np.int32),frames[i+1].astype(np.int32),dt = self.context.attrs.dt)
    agg = fig.canvas.switch_backends(FigureCanvasAgg)
    agg.draw()  #This produces a successful image. Simple Quiver plot.

    image = np.fromstring(agg.tostring_rgb(),dtype = np.uint8)
    image.shape = agg.get_width_height() + (3,)
    images.append(image)
self._render(images)

图片阵列:
[[[191 191 191]
  [191 191 191]
  [191 191 191]
  ...,

  [191 191 191]
  [191 191 191]
  [191 191 191]]]

注意:

该阵列的形状为(640,480,3),这是以前其他类似工作的阵列的形状。这与过去的其他成功之间的唯一区别是,在我加载图像并在渲染之前对其进行处理之前,但是此堆栈来自matplotlib.pyplot,后端切换到了FigureCanvasAgg;但是,当我在进行NumPy转换之前保存图像时,图像看起来非常完美。

我的OpenCV VideoWriter代码:
def writeMovie(self, fileName, fps=20):
    isColor = len(self[0].shape) == 3
    writer = cv2.VideoWriter(fileName, 
                             fps=fps,
                             fourcc=cv2.cv.CV_FOURCC(*"PIM1"),
                             frameSize=self[0].shape[0:2], 
                             isColor=isColor)
    for image in self:
        if image.dtype == np.bool:
            image = image.astype(np.uint8)*255
        writer.write(image)

我将竭尽所能提供更多信息,以澄清并帮助回答该问题。任何建议/建议将不胜感激。

最佳答案

当视频似乎是空的时,这是因为您要放入视频中的图像与视频参数不匹配。我在C++中有一个等效的问题,我的问题是输入大小和编解码器。

我是python的新手,但我认为您可能有同样的问题。也许您应该尝试打印frameSize和fourcc以查看这些参数是否正确(它不是self[0].shape[0:1]吗?(同样,我对python不太了解,所以在这一点上我可能是错的))

关于python - OpenCV VideoWriter:播放视频的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038980/

相关文章:

python - Jinja2 模板中的模态窗口。 flask

c++ - 为什么同时链接libpng和opencv没有冲突?

android - 三星 Galaxy S5 无法以低分辨率/帧率录制视频

python - 如何使用日期时间索引在 Pandas 中进行插值重建索引?

python - 我可以用键盘以某种方式中断 GridSearchCV 并且在此之前仍然收集最好的参数吗?

C++:openCV 错误

javascript - 在视频缓冲之前,事件不会起作用

video - ffmpeg 强度直方图调整

python - 为什么解析操作中的 str.join 会产生异常?

java - 如何在 OpenCV Python 中读取 Minoru 3d 网络摄像头的视频?