5

我有一個視頻培訓課程作爲AVI文件提供。大多數屏幕顯示爲幻燈片,鼠標指針在其上移動。如何使用python從視頻中提取幻燈片

我想自動捕捉滑動的屏幕截圖當屏幕改變(當圖像改變少量忽略由於移動鼠標指針周圍。)

我想這樣做,所以我可以將圖像粘貼到單詞或html文檔中,我可以添加註釋,因爲我現在正在學習屏幕截圖,但它非常緩慢且乏味,課程時間非常長(總共24小時左右)。

我很瞭解python,但我不確定如何從視頻文件中提取靜止圖像,然後如何與另一個視頻文件進行比較,以瞭解它們有多大差異來決定要保留哪些圖像以及哪些要放棄。

任何人都可以建議如何去做到這一點?

回答

10

ffmpeg這樣的工具適合從視頻中提取圖像。從手動:

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg 

這將提取從視頻每秒一個視頻幀和 將輸出它們在名爲foo-001.jpegfoo-002.jpeg文件等 圖像將被重新縮放以適應新的寬x高值。

比較它們的差異可能可以通過PIL和/或OpenCV完成。

編輯:我才意識到,它可能會更有效,只搶了key frames(幀內),因爲當那些在場景的急劇變化發生發生。快速谷歌後,我們有這個:

ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg 
+0

謝謝。第二個例子,即使使用最新版本的ffmpeg,我也無法工作。第一個例子適用於我所需要的。 – zio

5

你基本上想要的是場景檢測。 framedifferenceanalyzer是Python中概念的教育證明,它完全符合這一點,並且應該爲了解問題本身提供一個良好的起點。

至於自己實現它,ffmpeg是將視頻轉換爲幀序列的理想工具 - 我可能不會嘗試在純Python中執行該操作。

爲了計算幀之間的差異,你可以使用ImageMagick(特別是它的compare工具)。 ImageMagick有幾種Python綁定,例如PythonMagickmagickwand,僅舉兩個例子。

您還可以使用OpenCV進行圖像分析。 OpenCV是一個高性能,高質量的計算機視覺算法庫,可能是其中一個,即使不是最強大的工具,也可以做這樣的事情。但是,它假定您對計算機視覺/圖像處理有一定的知識,並且已經對您所尋找的內容有了一個好的想法。

+0

謝謝。比較工具和python中的imagemagick一起工作的很好。 – zio