2012-10-07 59 views
0

我可以使用cv2.VideoCapture(myvideo)打開視頻並使用opencv 2播放它。但有沒有辦法使用opencv 2刪除該視頻中的幀?刪除必須在原地進行,也就是說,由於刪除的幀,正在播放的文件將以更短的時間結束。簡單地清零矩陣是不夠的。可以從opencv中的視頻文件中刪除幀

例如像:

video = cv2.VideoCapture(myvideo.flv) 

while True: 
    img = video.read() 

    # Show the image 
    cv2.imgshow(img) 

    # Then go delete it and proceed to next frame, but is this possible? 
    # delete(img)?? 

所以上面的代碼在技術上包含0字節在結束,因爲它讀取然後刪除在視頻文件中的幀。

回答

1

OpenCV不適合這份工作。您需要的是媒體處理框架,如ffmpeg(= libavformat/libavcodec/libswscale)或GStreamer。

也取決於所使用的編碼方案,僅僅簡單地刪除單個幀可能是不可能的。僅在由幀內幀(I幀)組成的視頻中,幀精確編輯纔是可能的。如果視頻是在所謂的編碼的圖片組(GOP)刪除單個幀需要重新編碼它是它的一部分的整個GOP。

0

你不能在原地做,但你可以使用OpenCV的VideoWriter在新的視頻文件中編寫你想要的幀。