从OpenCV中的“平均”检测颜色范围

时间:2014-02-03 13:59:34

标签: c++ opencv computer-vision skin

目前我正在使用HaarCascade来检测图片中的脸部。这是有效的,我得到了面部的矩形。

现在我想得到“平均值”?那个矩形(肤色)。并使用它作为颜色范围的基础来搜索照片中的其他皮肤。我应该怎么做呢?

我找到了inRange函数,它搜索范围内的颜色。但我不太确定如何才能获得我皮肤的平均颜色。看来inRange函数需要HSV值吗?但是,我不知道那种格式是什么。它在photoshop中似乎与HSB不同。 (我试过“测试目的”)。

我的问题归结为这个问题,如何在矩形中获得“平均”颜色,并找到该范围内的其他颜色(例如,比该颜色更浅和更暗,但是相同的阴影)。

感谢。

1 个答案:

答案 0 :(得分:0)

在检测到的感兴趣区域内获取3D颜色直方图。也就是说,不是每个通道的三个1D直方图,而是所有3个通道的一个3D直方图。 OpenCV的calcHist有选项。这是an example这样做的。此示例使用Python绑定OpenCV,但它显示了如何设置参数。

此外,将直方图的范围设置在适合肤色的范围内。正如MSalters在评论中所建议的那样,HSV对于像这样的事情来说是一个更好的色彩空间。也许你可以忽略S和V通道,只做V的1D直方图。试试结束。

具有最高计数的bin将成为您的“平均”肤色。