【发布时间】:2012-01-13 15:49:24
【问题描述】:
[注意:这是对 earlier question 的重写,被认为不合适并已关闭。]
我需要对电视 (TV) 视频进行一些像素级分析。这种分析的确切性质并不相关,但它基本上涉及查看电视视频每一帧的每个像素,从 MPEG-2 传输流开始。主机平台将是服务器级、多处理器 64 位 Linux 机器。
我需要一个能够处理传输流解码并实时向我呈现图像数据的库。 OpenCV 和 ffmpeg 是我为这项工作考虑的两个库。 OpenCV 很有吸引力,因为我听说它具有易于使用的 API 和丰富的图像分析支持,但我没有使用它的经验。过去我使用ffmpeg从文件中提取视频帧数据进行分析,但它缺乏图像分析支持(尽管英特尔的IPP可以补充)。
除了针对此问题的一般建议(不包括实际图像分析),我还有一些更具体的问题可以帮助我入门:
- 工业界常用ffmpeg还是OpenCV作为实时的基础 视频分析,或者还有什么我应该看的?
- OpenCV可以实时解码视频帧,而且还留够 CPU 还用于实时进行重要的图像分析?
- 足以使用 ffpmeg 进行 MPEG-2 传输流解码,或者 直接使用 MPEG-2 解码库是否更可取(如果是,是哪个)?
- ffmpeg 的输出帧是否有特定的像素格式? 还是 OpenCV 在生成(如 RGB、YUV 或 YUV422 等)方面特别有效?
【问题讨论】:
-
您提出的许多与性能相关的问题完全取决于您使用的硬件。
-
@karlphillip 我意识到平台的选择会影响性能,但它不会平等地影响所有库选项吗?如果没有,您可以谈谈选择平台如何使一个图书馆比另一个图书馆受益更多,请分享。硬件尚未购买,因此此信息很有价值。
-
我已经使用 c++ 包装器使用 opencv 进行了实时网络摄像头帧分析。它循环遍历每个像素并检查颜色,速度非常快,因为我能够运行其他应用程序,如 opera 和 3d 视口应用程序。在 linux 上工作。
-
@Randall 不一定。例如,OpenCV makes heavy usage on Intel's IPP 这意味着它比您可能使用的其他库从英特尔架构中受益更多。 :)
标签: linux video opencv ffmpeg signal-processing