2014-04-04 32 views
1

我正在玩堆疊和處理天文照片。我對理解算法感興趣,因爲我在完成的圖像中,所以我還沒有嘗試任何浮動的許多拋光產品。圖像處理:將視頻導入到python/matplotlib中?

我的靜態照片(幾十個在同一時間),中等規模的集合,我可以成功地導入使用

img = imread("filename.jpg") 

這將產生一個numpyndarray矩陣,這點我可以操縱使用可用的工具在numpyscipy.ndimage,並使用imshow()進行顯示。這在後端支持Python Imaging Library, PIL,據我所知只支持靜止圖像。

對於較長時間的曝光,將相機設置爲拍攝視頻,然後從視頻中提取幀並通過與靜止圖像相同的分析管線運行它們會很好。據我所知,PIL只支持靜止圖像。我的相機用.MOV文件擴展名生成Quicktime電影。

是否有一個Python庫,可以讓我訪問視頻幀中的數據?

另外,我會很感激使用外部工具(似乎存在一個命令行ffmpeg,但我沒有嘗試過)的指導,以生成臨時文件,我可以提供給我的靜止圖像管道。由於我可能想要在10分鐘30fps的電影中檢查所有18k幀,只是將所有幀提取到一個大文件夾中可能不是一種選擇。

我在OSX Mavericks上運行Python 2.7;我可以輕鬆訪問MacPorts來安裝。

+0

嗯,現在我看到[this](http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/),這似乎通過管道執行命令行ffmpeg。 – rob

+0

作爲垃圾郵件的答案,請參閱https://github.com/soft-matter/pims。如果要提取特定的幀,則鏈接的項目會出現問題。爲了更好地理解ffmpeg提供的問題,請參閱https://github.com/scikit-image/scikit-image/pull/850和關聯討論。 – tacaswell

回答

1

的ffmpeg的下面一行將讓你提取視頻的10秒,開始(電影開始後這裏20秒)預先給定的時間:

ffmpeg -i myvideo.MOV -ss 00:00:20.00 -t 10 img%3d.jpg 

這是很容易弄清楚如何可以在Bash循環中使用它,或者通過Python在循環中運行該命令。