我想优化我的程序,我正在使用描述here的颜色对象跟踪算法。唯一的区别是我使用的是cvBlob库,而不是cv :: moments(cvBlob更快更准确)。使用profiler(valgrind + kcachegrind)我发现~29%的时间是采用颜色空间转换方法(cv :: cvtColor;我跟踪三种颜色的对象)。我正在从BGR转换为HSV。
我在一些论文中读到,使用YCbCr色彩空间在色彩跟踪方面更胜一筹。从BGR转换为YCbCR是个好主意吗?它应该稍快一点,因为它需要较少的乘法(我不确定 - 我不知道OpenCv如何在内部执行)。这个算法是否需要进行一些更改,或者我可以将跟踪颜色的下限和上限从HSV转换为YCbCr,然后使用inRangeS方法,就像我使用HSV一样?
有没有办法从YcbCr(或YUV)的驱动程序中获取帧?我不是在询问HSV,因为v4l2,AFAIR不支持。
你还有其他想法吗?我不想使用IPP或GPU。
答案 0 :(得分:2)
查看cvtColor
的OpenCV文档。它讨论了BGR2YCbCr
使用cvtColor
之间的转换。
(请尝试并在此处评论结果,即在YCbCr模式下花费的总时间百分比。因为它将来会帮助很多人。)