目前我正在使用HaarCascade来检测图片中的脸部。这是有效的,我得到了面部的矩形。
现在我想得到“平均值”?那个矩形(肤色)。并使用它作为颜色范围的基础来搜索照片中的其他皮肤。我应该怎么做呢?
我找到了inRange函数,它搜索范围内的颜色。但我不太确定如何才能获得我皮肤的平均颜色。看来inRange函数需要HSV值吗?但是,我不知道那种格式是什么。它在photoshop中似乎与HSB不同。 (我试过“测试目的”)。
我的问题归结为这个问题,如何在矩形中获得“平均”颜色,并找到该范围内的其他颜色(例如,比该颜色更浅和更暗,但是相同的阴影)。
感谢。
答案 0 :(得分:0)
在检测到的感兴趣区域内获取3D颜色直方图。也就是说,不是每个通道的三个1D直方图,而是所有3个通道的一个3D直方图。 OpenCV的calcHist有选项。这是an example这样做的。此示例使用Python绑定OpenCV,但它显示了如何设置参数。
此外,将直方图的范围设置在适合肤色的范围内。正如MSalters在评论中所建议的那样,HSV对于像这样的事情来说是一个更好的色彩空间。也许你可以忽略S和V通道,只做V的1D直方图。试试结束。
具有最高计数的bin将成为您的“平均”肤色。