cv2.VideoWriter只生成空文件

4
当我尝试使用opencv2制作视频时,始终得到一个空文件。我的Python版本是2.7.13,OpenCV版本是3.2.0。我正在使用Windows操作系统。我尝试了@Creyesk的代码,但仍然得到了一个空文件。
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)

非常感谢!
2个回答

1
问题似乎出在您的fourCC参数上。我尝试了以下参数,它可以工作:
writer=cv2.VideoWriter("test1.avi", cv.CV_FOURCC(*'DIVX'), 25, (640,480))

12
更具体地说,在我的情况下,问题出在维度不匹配上。尝试写入大小与初始化参数不同的帧会导致它们被静默丢弃(没有错误提示)。 - Gerard
最后我还得记得调用writer.release(),否则输出文件会损坏。 - Stefan Monov

1

正如@Gerard的评论中提到的,造成这种情况可能有很多原因,因为在编写程序或添加帧时出现的错误不会被作为异常抛出。

要检查构造函数是否起作用,您可以调用writer.isOpened()并检查它是否为True

然后,在写入帧时仍然可能会发生错误,例如当帧与传递给构造函数的形状不同时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接