2014-04-04 50 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在循环中运行该命令。