我需要创建一个可以实时处理图像的系统。我已经用C++实现了一个像素格式转换系统,还可以进行一些简单的变换(目前:旋转和镜像)。
系统的输入/输出格式是以下格式的帧:
- RGB(24,32) - YUYV420、YUYV422 - JPEG - 原始灰度
例如,一个操作可能是:
- YUYV422 -> 旋转90 -> 水平翻转 -> RGB24 - 灰度 -> 旋转270 -> 垂直翻转 -> YUYV420
该系统的目标是为旋转/镜像和像素格式转换提供最佳性能。我的当前实现依赖于OpenCV,但在处理超过2k分辨率的数据时存在性能问题。
当前的实现使用cv::Mat和cv::transpose/cv::flip/cv::cvtColor,并且我优化了系统以删除过渡缓冲区并尽可能复制。
我不太想重复造轮子,我知道使用FFmpeg的swscale和一些过滤器可以实现相同的结果。我的问题是:
1. FFMpeg系统相当通用,您认为我可能会遇到此解决方案的占用空间/性能问题吗? 2. 在OpenCV中似乎对格式转换进行了某种优化,但我对FFMpeg实现没有任何了解...(注:我在具有SSE的x86_64英特尔平台上) 3. 您是否了解任何可以处理此类实时简单变换的库?
谢谢。
系统的输入/输出格式是以下格式的帧:
- RGB(24,32) - YUYV420、YUYV422 - JPEG - 原始灰度
例如,一个操作可能是:
- YUYV422 -> 旋转90 -> 水平翻转 -> RGB24 - 灰度 -> 旋转270 -> 垂直翻转 -> YUYV420
该系统的目标是为旋转/镜像和像素格式转换提供最佳性能。我的当前实现依赖于OpenCV,但在处理超过2k分辨率的数据时存在性能问题。
当前的实现使用cv::Mat和cv::transpose/cv::flip/cv::cvtColor,并且我优化了系统以删除过渡缓冲区并尽可能复制。
我不太想重复造轮子,我知道使用FFmpeg的swscale和一些过滤器可以实现相同的结果。我的问题是:
1. FFMpeg系统相当通用,您认为我可能会遇到此解决方案的占用空间/性能问题吗? 2. 在OpenCV中似乎对格式转换进行了某种优化,但我对FFMpeg实现没有任何了解...(注:我在具有SSE的x86_64英特尔平台上) 3. 您是否了解任何可以处理此类实时简单变换的库?
谢谢。