OpenCV——如何优化颜色跟踪程序

OpenCV -- how to optimize color tracking program?

本文关键字:颜色 程序 优化 跟踪 何优化 OpenCV      更新时间:2023-10-16

我想优化我的程序,在其中我使用了这里描述的颜色对象跟踪算法。唯一的区别是我使用的是cvBlob库,而不是cv::moments(cvBlob更快更准确)。使用profiler(valgrind+kcachegrind),我发现大约29%的时间是通过颜色空间转换方法(cv::cvtColor;我用三种颜色跟踪对象)花费的。我正在从BGR转换为HSV。

我在一些论文中读到,使用YCbCr颜色空间在颜色跟踪方面甚至更好。将BGR转换为YCbCR是个好主意吗?它应该稍微快一点,因为它需要更少的乘法运算(我不确定——我不知道OpenCv是如何在内部实现的)。这个算法需要一些更改吗?或者我可以像处理HSV一样,将跟踪颜色的上下限从HSV转换为YCbCr,然后使用inRangeS方法吗?

有什么方法可以从YcbCr(或YUV)中的驱动程序获取帧吗?我不是在问HSV,因为这是不支持v4l2,AFAIR。

你还有其他想法吗?我不想使用IPP或GPU。

查看cvtColor的OpenCV文档。讨论了CCD_ 2与CCD_。

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