FFMpeg против OpenCV для преобразования формата / простого преобразования - PullRequest
0 голосов
/ 01 февраля 2019

Мне пришлось создать систему, которая может обрабатывать изображения в реальном времени.Я реализовал в C ++ систему преобразования форматов пикселей, которая также может выполнять некоторые простые преобразования (в настоящее время: поворот и зеркальное отображение).

Формат ввода / вывода системы - это фреймы в следующих форматах:

  • RGB (24, 32)
  • YUYV420, YUYV 422
  • JPEG
  • Необработанная шкала серого

Например, одна операцияможет быть:

  • YUYV422 -> поворот 90 -> поворот по горизонтали -> RGB24
  • оттенки серого -> поворот 270 -> поворотный поворот -> YUYV420

Цель системы - предложить лучшую производительность для вращения / зеркального отображения и преобразования формата пикселей.Моя текущая реализация опирается на OpenCV, но у меня возникают проблемы с производительностью при обработке данных с разрешением выше 2k.

Текущая реализация использует cv :: Mat и cv :: transpose / cv :: flip / cv :: cvtColor,и я оптимизировал систему, чтобы удалить переходные буферы и копировать как можно больше.

Не очень рад изобретать велосипед, я знаю, что используя swscale и некоторые фильтры из FFMpeg, можно добиться того же результата.У меня вопрос:

  1. Система FFMpeg довольно универсальна, как вы думаете, я мог бы пострадать из-за снижения производительности / производительности с этим решением?

  2. Преобразование формата в OpenCV выглядит несколько оптимистично, но я понятия не имею о реализации FFMpeg ... (примечание: я работаю на платформе Intel x86_64 с SSE)

  3. Знаете ли вы какую-либо библиотеку, кромеМожно ли обрабатывать такие простые преобразования в режиме реального времени?

Спасибо

1 Ответ

0 голосов
/ 02 февраля 2019

Реализация OpenCV оптимизирована для вашей конфигурации.Не ожидайте улучшения от ffmpeg.Недавно OpenCV перешел на libjpeg-turbo с оптимизацией SSE , это может улучшить преобразования JPEG.

...