2017-04-11 92 views
1

我有一系列的图像,我想创建一个基于他们的视频,我写了下面的代码:蟒蛇OpenCV的:不能将图像保存到视频

import cv2 
img=[] 
for i in range(1,285): 
    img.append(cv2.imread(str(i)+'.png')) 

for j in range(1,285): 
    height,width,layers=img[j].shape 
    video=cv2.VideoWriter('video.avi',-1,1,(width,height)) 
    video.write(img[j]) 

cv2.destroyAllWindows() 
video.release() 

和错误是:

AVF: AVAssetWriter status: Cannot Save 
mMovieWriter.status: 3. Error: Cannot Save 

哪里出错了?

回答

1

你为每一帧你想写的新的Videowriter,所以你实际上并没有添加帧到视频,但你不断制作新的videowriters添加一帧。这可能会导致保存错误。试试这个:

# Create the videowriter with the right parameters 
height , width , layers = img[0].shape 
video=cv2.VideoWriter('video.avi',-1,1,(width,height)) 

# Loop through all you frames and add each frame to the video 
for j in range(1,285):  
    video.write(img[j]) 

# Cleanup and save video 
cv2.destroyAllWindows() 
video.release() 

查看this OpenCV C++ tutorial了解更多信息。

+0

thx但它仍然不起作用,我认为列表对象没有一个形状方法吗?我在想也许VideoWriter只能对那些形状相同的图像进行操作,当图像具有不同的形状时,也许它们不能用于创建视频... –

+0

确保视频尚不存在。另外,尝试不同的编解码器。最后,尝试不同的输入法。使用OpenCV制作白色和黑色图像,并在图像之间交替并保存视频,这应该起作用。如果所有这些都不起作用,请在其他系统上尝试。我相信'AVAssetWriter'是iOS,所以可能是这样写的视频不支持该平台(不能为你测试)。 – Jurjen