2016-12-16 54 views
-2

我試圖從我創建的cos圖像創建視頻,但是我製作的avi視頻爲空。我不得不使用cv2.VideoWriter()。通過創建的視頻正確顯示幀是0字節。你知道如何解決這個問題嗎?Python/Open CV:從cos圖像序列創建視頻,視頻爲空

如果我從avi視頻中獲得一個幀,然後我創建了一個新的可播放視頻。

預先感謝您!

我的代碼是

import cv2 
import math 
import numpy as np 

N=128 
Icos_1 = np.zeros((N,N)) 
Icos_2 = np.zeros((N,N)) 
for i in range(0,N): 
    for j in range(0,N): 
     myPi = 2*math.pi/N 
     th1 = 1*i + 3*j 
     th2 = 2*i + 4*j 
     Icos_1[i,j] = 255*(math.cos(myPi*th1)) 
     Icos_2[i,j] = 255*(math.cos(myPi*th2)) 
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('sample_video.avi',fourcc, 25.0, (128,128)) 

or x in range(1, 100): 
    if (x % 2) != 0: 
     frame = Icos_1 
    else: 
     frame = Icos_2 

    out.write(np.uint8(frame)) 
    cv2.imshow('frame',np.uint8(frame)) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# Release video objects if job is finished 
out.release() 
+1

'write(np.uint8(frame))' – furas

+0

您也可能沒有安裝正確的編解碼器或者需要支持編解碼器來編寫視頻。您使用什麼操作系統?你有沒有嘗試過使用MPEG-4而不是XVID? – rayryeng

+0

@furas它沒有工作!仍然是同樣的結果。任何其他想法? – zinon

回答

0

我找到了解決辦法!

我在out = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128))

完整的代碼使用0作爲編解碼器:

import cv2 
import math 
import numpy as np 

N=128 
Icos_1 = np.zeros((N,N)) 
Icos_2 = np.zeros((N,N)) 
for i in range(0,N): 
    for j in range(0,N): 
     myPi = 2*math.pi/N 
     th1 = 1*i + 3*j 
     th2 = 2*i + 4*j 
     Icos_1[i,j] = 255*(math.cos(myPi*th1)) 
     Icos_2[i,j] = 255*(math.cos(myPi*th2)) 

out = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128)) 

or x in range(1, 100): 
    if (x % 2) != 0: 
     frame = Icos_1 
    else: 
     frame = Icos_2 

    out.write(np.uint8(frame)) 
    cv2.imshow('frame',np.uint8(frame)) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# Release video objects if job is finished 
out.release() 
如果你使用`np.uint8(框架)`你爲什麼不使用在屏幕上顯示,然後
+0

0彈出一個窗口,允許您選擇安裝在系統上的編解碼器。您的問題的實際解決方案是您選擇了正確的編解碼器。請更新您的帖子,讓我們知道您實際選擇了哪個編解碼器。 – rayryeng

+0

@rayryeng當運行具有0的'cv2.VideoWriter()'時,實際上我的程序運行正常。如果我也將「0」設置爲幀速率,程序會彈出一個窗口。但在這裏我的幀速率= 25.0fps,所以我的程序正在工作。 – zinon