2017-04-11 129 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