繁体   English   中英

使用cv2 VideoWriter编写numpy数组

[英]Writing numpy arrays using cv2 VideoWriter

我在使用opencv2.3.1 VideoWriter编写玩具示例视频时遇到问题,以下是我的操作方法:

writer = cv2.VideoWriter('test1.avi',cv.CV_FOURCC('P','I','M','1'),25,(640,480))
for i in range(1000):
    x = np.random.randint(10,size=(480,640)).astype('uint8')
    writer.write(x)
#del writer (with or without tested)

我尝试了每个可能的组合,如果扩展名为mpg,则为0字节文件;如果为avi,则为5.5kb。 我应该说有些人指出我应该从源代码构建ffmpeg库而不是apt-get它。 好吧,我是在这个网站http://vinayhacks.blogspot.com/2011/11/installing-opencv-231-with-ffmpeg-on-64.html的帮助下,在新机器上做到的。 在编译opencv时也出现错误(错误与ffmpeg有关)。 现在我真的没有想法,如何使用OPENCV生成视频?

提前致谢

VideoWriter的最后一个参数是isColor ,默认值为True 因此,如果将其更改为False则可以编写2D数组。

import cv2
import numpy as np

writer = cv2.VideoWriter('test1.avi', cv2.VideoWriter_fourcc(*'PIM1'), 25, (640, 480), False)
for i in range(100):
    x = np.random.randint(255, size=(480, 640)).astype('uint8')
    writer.write(x)

您好我是opencv的新手,我遇到了同样的问题。 似乎writer.write(x)需要x为数组whit RGB值而不是标量。 我通过这样做解决了这个问题:

import cv2
import cv2.cv as cv
import numpy as np

writer = cv2.VideoWriter('test1.avi',cv.CV_FOURCC('P','I','M','1'),25,(640,480))
for i in range(1000):
    x = np.random.randint(255,size=(480,640)).astype('uint8')
    x = np.repeat(x,3,axis=1)
    x = x.reshape(480, 640, 3)
    writer.write(x)

我认为有更清洁的方法可以做到,但我没有找到任何。

你在使用哪种操作系统? 您确定您的系统安装了PIM1编解码器吗?

我使用windows,我可以使用cv.FOURCC(*"DIB ")来表示未压缩的视频,或者使用-1来显示编解码器对话框。

安装ffdshow后,我可以使用cv.FOURCC(*"ffds")通过MPEG-4对视频进行编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM