2017-01-17 65 views
0

我使用的代碼將輸入視爲視頻文件,然後對視頻應用圖像處理(前景分割)。 我試圖保存處理過的幀(輸出),但我無法弄清楚如何使用循環做到這一點。循環保存生成的多個幀

while(1): 
    ret, frame = cap.read() 
    fgmask = fgbg.apply(frame) 
    cv2.imshow('frame',fgmask) 

    cv2.imwrite("frame.jpg", fgmask) 

代碼的最後一行保存幀。但它目前僅保存最後生成的輸出,因爲沒有循環來保存所有生成的幀。

如何使用循環保存所有處理的文件?

回答

3

引入一個計數器來更改文件名即可解決問題

cnt = 1 
while(1): 
    ret, frame = cap.read() 
    fgmask = fgbg.apply(frame) 
    cv2.imshow('frame',fgmask) 

    cv2.imwrite("frame" + str(cnt) + ".jpg", fgmask) 
    cnt += 1 
0

或者可以輸出生成的幀的視頻。

# Open the video writer 
out = cv2.VideoWriter('output.avi',-1, 1,(int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))) 

while(1): 
    ret, frame = cap.read() 
    fgmask = fgbg.apply(frame)  
    # Write the frame 
    out.write(fgmask) 

# Release the writer 
out.release()