【发布时间】:2012-03-01 11:59:10
【问题描述】:
我想优化我的程序,我在其中使用here 描述的颜色对象跟踪算法。唯一的区别是我使用的是 cvBlob 库,而不是 cv::moments(cvBlob 更快更准确)。使用分析器(valgrind + kcachegrind),我发现色彩空间转换方法(cv::cvtColor;我正在跟踪三种颜色的对象)花费了大约 29% 的时间。我正在从 BGR 转换为 HSV。
我在一些论文中读到,使用 YCbCr 颜色空间在颜色跟踪方面甚至更好。从 BGR 转换为 YCbCR 是个好主意吗?它应该稍微快一点,因为它需要更少的乘法(我不确定——我不知道 OpenCv 在内部是如何做到的)。该算法是否需要一些更改,或者我可以将跟踪颜色的上下边界从 HSV 转换为 YCbCr,然后使用 inRangeS 方法,就像我对 HSV 所做的那样?
有什么方法可以从 YcbCr(或 YUV)中的驱动程序获取帧?我不是在问 HSV,因为 v4l2 不支持,AFAIR。
您还有其他想法吗?我不想使用 IPP 或 GPU。
【问题讨论】:
标签: c++ algorithm optimization opencv colors