2017-05-19 74 views
1

我有一個輸入文本文件,其中包含必須放入視頻中的圖像名稱,然後在視頻上應用背景減除,然後保存輸出。無法保存背景減去的視頻Python openCV

我嘗試這樣做:

# convert images to video 
f = open('files_harsha.txt','r+') 
fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
out = cv2.VideoWriter('harsha_output.avi',fourcc, 10.0, (1344,1024)) 
for line in f: 
    frame=cv2.imread(line.strip()) 
    out.write(frame) 
# cv2.imshow('1',frame) 
# cv2.waitKey(0) 

out.release() 

上面的代碼中正常工作,節約了視頻。然後我進行背景扣除,並嘗試保存輸出,如下圖所示:

capture = cv2.VideoCapture('harsha_output.avi') 
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), 
int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))) 
fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
video = cv2.VideoWriter('harsha_subtractor.avi', fourcc, 10.0,size) 
fgbg= cv2.createBackgroundSubtractorMOG2(varThreshold=50,history=4) 

while (1): 
    ret, img = capture.read() 
    if ret==True: 
     fgmask = fgbg.apply(img) 
     video.write(fgmask) 
     #cv2.imshow('forehead',fgmask) 

    else: 
     capture.release() 
     video.release() 
     break 

    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 

cv2.destroyAllWindows() 

我能看到背景中減去視頻,但我無法保存文件。我爲什麼會遇到這個問題?

我現在用的蟒蛇IDE(Spyder的)內的Python 2.7和正在使用的OpenCV 3.X

+0

您是否收到錯誤?一個空白的視頻文件? –

+0

@EliezerBernart我得到一個空白的視頻 –

+1

太棒了!在寫入文件之前,您是否嘗試對圖像進行標準化?你可以使用'cv2.convertScaleAbs'。 也許可能是別的。輸出視頻的文件大小是多少? –

回答

0

只是爲了記錄。如dan-mašek所示,fgmask是1通道圖像,因此VideoWriter失敗,顯示以下error: (-215) scn==2 & (scn == 3 || scn == 4)。 我解決了通過isColor=False參數VideoWriter