OpenCV自适应阈值化HSV图像

时间:2015-11-03 14:21:35

标签: c++ opencv threshold adaptive-threshold

我们(我的小组和我)希望能够跟踪一只手(主要是索引指尖)。手的颜色与图片中的脸基本相同,但正如您所看到的,我们得到的噪音也很多。它适用于黑色"屏幕"手背后。

现在的问题是,自适应阈值处理仅对灰度图像有用,因此不能很好地检测到手。

我尝试使用谷歌搜索HSV自适应阈值但没有运气,所以我认为stackoverflow有一些好主意。

编辑:当前的HSV - >二进制阈值:

inRange(hsvx, Scalar(0, 50, 0), Scalar(20, 150, 255), bina);

Image here

2 个答案:

答案 0 :(得分:1)

我建议您使用颜色直方图进行跟踪。 Camshift正在努力取得良好的成功。

OpenCV中有camshift示例代码。 见http://docs.opencv.org/master/db/df8/tutorial_py_meanshift.html(非常简短的解释) 或https://github.com/Itseez/opencv/blob/master/samples/cpp/camshiftdemo.cpp(代码示例)

如果您想要使用阈值处理,那么您已经适当地不对V通道进行阈值处理。我仍然建议在H和S上进行单独的自适应阈值处理。

答案 1 :(得分:1)

我建议您使用 直方图反投影 算法。

Back Projection是一种记录给定图像像素与直方图模型中像素分布的匹配程度的方法。您可以使用手动选择的手像素组来指定直方图模型。 该算法输出图像,其中每个像素具有似然值,该像素的颜色是皮肤的颜色(类似于皮肤)。然后,您可以指定可能性阈值来调整性能。

它可以让你找到图像中的皮肤色彩区域。

详见: