Я хочу оптимизировать свою программу, в которой я использую алгоритм отслеживания цветных объектов, описанный здесь . Разница лишь в том, что я использую библиотеку 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.