c++ - OpenCV——如何优化颜色跟踪程序?

标签 c++ algorithm optimization opencv colors

我想优化我的程序,其中我使用描述的颜色对象跟踪算法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。

最佳答案

查看 cvtColor 的 OpenCV 文档.它讨论了使用 cvtColorBGR2YCbCr 之间进行转换。

(请尝试并在这里评论结果,即在 YCbCr 模式下花费的总时间的百分比。因为它将在未来帮助很多人。)

关于c++ - OpenCV——如何优化颜色跟踪程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203675/

相关文章:

java - 从二维数组中查找唯一的总和,其中每个数组贡献一个值,该值的总和必须是唯一的

algorithm - 优化图形邻接的矢量化代码

c++ - 如何让 GCC 使用非平凡的 const/dest 实例化一个类实例?

c++ - 在 Windows C++ 中从 JPG/PNG 文件创建 BITMAPINFO

c++ - 成员类型模板特化

c++ - 对 std::bad_cast::bad_cast() 的 undefined reference

c++ - 为什么 C++ 中对象会默认初始化,而基元却没有?

python - 生成数字分区的算法

algorithm - DCF77 解码器与噪声信号

C#——引用传递的设计思路