OpenCV - как оптимизировать программу отслеживания цвета? - PullRequest
0 голосов
/ 09 февраля 2012

Я хочу оптимизировать свою программу, в которой я использую алгоритм отслеживания цветных объектов, описанный здесь . Разница лишь в том, что я использую библиотеку cvBlob вместо cv :: moment (cvBlob был быстрее и точнее). Используя профилировщик (valgrind + kcachegrind), я обнаружил, что ~ 29% времени занято методом преобразования цветового пространства (cv :: cvtColor; я отслеживаю объекты в трех цветах). Я конвертирую из BGR в HSV.

Я читал в некоторых статьях, что использование цветового пространства YCbCr еще лучше в отслеживании цветов. Это хорошая идея для преобразования из BGR в YCbCR? Он должен быть немного быстрее, так как требует меньше умножений (я не уверен в этом - я не знаю, как это делает OpenCv внутри). Нужны ли в этом алгоритме некоторые изменения, или я могу просто преобразовать нижнюю и верхнюю границы для отслеживаемого цвета из HSV в YCbCr, а затем использовать метод inRangeS, как я делал с HSV?

Есть ли способ получить кадр из драйвера в YcbCr (или YUV)? Я не спрашиваю о HSV, потому что это не поддерживается v4l2, AFAIR.

У вас есть другие идеи? Я не хочу использовать IPP или GPU.

1 Ответ

2 голосов
/ 09 февраля 2012

Ознакомьтесь с документацией OpenCV для cvtColor.В нем говорится о конвертации между BGR2YCbCr с использованием cvtColor.

(Пожалуйста, попробуйте это, а также прокомментируйте здесь результат, то есть, сколько процентов от общего времени, которое требуется в режиме YCbCr. Потому что это поможет многимв будущем.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...