linux – 用于电视(TV)视频的实时像素级分析的建议

[注意:这是对 earlier question的重写,被认为是不恰当和关闭的.]

我需要对电视(电视)视频进行像素级分析.这种分析的确切性质并不相关,但它主要涉及从MPEG-2传输流开始查看电视视频每帧的每个像素.主机平台将是服务器级,多处理器64位Linux机器.

我需要一个可以处理传输流解码的库,并实时向我提供图像数据. OpenCV和ffmpeg是我正在考虑进行这项工作的两个库. OpenCV很吸引人,因为我听说它具有易于使用的API和丰富的图像分析支持,但我没有使用它的经验.我过去曾使用ffmpeg从文件中提取视频帧数据进行分析,但它缺乏图像分析支持(尽管英特尔的IPP可以补充).

除了针对此问题的方法的一般建议(不包括实际的图像分析),我还有一些更具体的问题可以帮助我开始:

> ffmpeg或OpenCV通常在工业中用作实时的基础
视频分析,还是我还应该关注其他什么?
> OpenCV可以实时解码视频帧,还能留下足够的空间
CPU留下来进行非平凡的图像分析,也是实时的?
>足以使用ffpmeg进行MPEG-2传输流解码,或者
是否最好直接使用MPEG-2解码库(如果是,哪一个)?
> ffmpeg的输出帧是否有特定的像素格式
或OpenCV在制作时特别有效(如RGB,YUV或YUV422等)?

解决方法

1.
我肯定会推荐OpenCV进行“实时”图像分析.我假设您实时指的是能够跟上电视帧速率(例如,NTSC(29.97 fps)或PAL(25 fps)).当然,正如评论中所提到的,它当然取决于您可用的硬件以及SD(480p)与HD(720p或1080p)的图像大小. FFmpeg肯定有它的怪癖,但你很难找到一个更好的免费替代品.它的力量和灵活性令人印象深刻我确信这是OpenCV开发人员决定将其用作OpenCV视频解码/编码后端的原因之一.

2.
在使用OpenCV进行解码时,我没有看到高延迟问题.您的系统有多少延迟?如果需要提高性能,请考虑使用单独的线程进行捕获/解码和图像分析.由于您提到了多处理器系统,因此这应该会更好地利用您的处理能力.我肯定会建议使用最新的Intel Core-i7(或者可能是Xeon等效)架构,因为这将为您提供当今最好的性能.

我在几个嵌入式系统上使用过OpenCV,所以我非常熟悉你对最佳性能的渴望.我已经多次发现没有必要处理全帧图像(特别是在尝试确定蒙版时).如果您难以处理获取的视频流,我强烈建议您对图像进行下采样.这有时可以立即为您提供4-8倍的加速(取决于您的下采样因子).同样在性能方面,我肯定会推荐使用英特尔的IPP.由于OpenCV最初是一个英特尔项目,IPP和OpenCV很好地融合在一起.

最后,因为图像处理是那些“令人尴尬的并行”问题领域之一,所以不要忘记在需要时使用GPU作为硬件加速器的可能性. OpenCV最近在这方面做了很多工作,所以如果需要你应该可以使用这些工具.

3.
我认为FFmpeg将是一个很好的起点;我能想到的大多数替代品(Handbrake,mencoder等)都倾向于使用ffmpeg作为后端,但如果你愿意的话,看起来你可能会使用IPP的Video Coding库.

4.
OpenCV的颜色内部表示是BGR,除非你使用像cvtColor这样的东西进行转换.如果您想查看FFmpeg支持的像素格式列表,您可以运行

ffmpeg -pix_fmts

看看它可以输入和输出什么.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户