从电影中原始提取帧

时间:2016-09-23 13:39:40

标签: java image scala image-processing ffmpeg

我想从灰度mj2电影中提取图像。每个像素使用16位编码。由于这是一部技术电影,我需要在不处理的情况下提取每个像素的值,因为这些值线性映射到物理量(来自红外摄像机的热图)。我正在使用Scala,我找不到任何适合直接提取的解决方案(在Scala或Java中,但我是初学者)。因此,我打算使用ffmpeg提取磁盘上的各个帧,然后在Scala中将它们作为BufferedImage加载并处理它们。

这是一个好方法吗?我应该使用哪种格式来避免数据中的任何转换?我希望每个提取的帧尽可能“原始”?是否可以直接输出包含上述值的csv?

2 个答案:

答案 0 :(得分:0)

在不查看示例的情况下,通用答案是使用段复用器

ffmpeg -i in.mj2 -f segment -segment_time 0.01 -map 0 -segment_format data frame%d.raw

但由于输入编解码器是JPEG-2000,您可以运行

ffmpeg -i in.mj2 -c copy frame%d.jp2 

答案 1 :(得分:0)

最简单的选择可能是使用图像处理库,如OpenCV。它提供了用于打开各种文件并提取所需信息的实用程序。