首页 > 解决方案 > 用于格式转换/简单转换的 FFMpeg 与 OpenCV

问题描述

我必须创建一个可以实时处理图像的系统。我已经用 C++ 实现了一个像素格式转换系统,它也可以进行一些简单的转换(目前:旋转和镜像)。

系统的输入/输出格式为以下格式的帧:

例如,一项操作可以是:

该系统的目标是为旋转/镜像和像素格式转换提供最佳性能。我当前的实现依赖于 OpenCV,但是在处理超过 2k 分辨率的数据时会遇到性能问题。

当前的实现使用 cv::Mat 和 cv::transpose/cv::flip/cv::cvtColor,我优化了系统以移除过渡缓冲区并尽可能多地复制。

不太乐意重新发明轮子,我知道使用 swscale 和 FFMpeg 的一些过滤器,可以达到相同的结果。我的问题是:

  1. FFMpeg 系统相当通用,您认为我可能会因使用此解决方案而受到占用空间/性能警告的困扰吗?

  2. 格式转换在 OpenCV 中似乎有些优化,但我不知道 FFMpeg 的实现......(注意:我在带有 SSE 的 x86_64 英特尔平台上)

  3. 你知道有什么库可以实时处理这种简单的转换吗?

谢谢

标签: c++performanceopencvffmpegvision

解决方案


OpenCV 实现针对您的配置进行了优化。不要期待 ffmpeg 的改进。最近,OpenCV 切换到具有 SSE 优化的 libjpeg-turbo ,这可能会改善 JPEG 转换。


推荐阅读