代码之家  ›  专栏  ›  技术社区  ›  Nareshkumar

从图像中检测肤色

  •  9
  • Nareshkumar  · 技术社区  · 14 年前

    我正在尝试开发一个应用程序,一旦提供了图像,就可以检测出人脸的颜色。我能够从OpenCV中找到人脸检测算法并将其集成。然而,我找不到任何的例子或接口,我可以检测到的脸的颜色。

    逻辑 :在给定的图像区域中,找到在给定区域中主要重复的颜色细节。我已经看了直方图,不知道它会有什么帮助。

    任何帮助都将不胜感激。

    3 回复  |  直到 13 年前
        1
  •  4
  •   Daniel Murali    14 年前

    直方图表示图像中给定颜色的像素数量。

    例如,假设您有这个3x3图像:

    1 1 1 2 2 1

    计数:4 2 1 颜色:1 2 3 4

    由此你会发现最常见的颜色是颜色1。总结出非常相似的颜色可能也是有意义的。

    例如,use count(2)=sum(hist(1),hist(2),hist(3));(hist是该颜色的像素数)

        2
  •  5
  •   Shervin Emami    14 年前

    检测面部(或任何图像)的肤色,我强烈建议您使用HSV颜色空间(或更复杂的颜色空间,如LAB)而不是默认的RGB颜色空间,因为RGB值将根据强光或弱光和阴影等发生很大变化。而HSV在处理照明差异方面做得更好,它提供了一个易于使用的颜色值。

    HSV表示色调饱和度值,其中色调是颜色。例如:0的色调是红色,50的色调可能是绿色。饱和度是灰色,因此接近0的饱和度值意味着它看起来很暗或灰色,而200的饱和度值可能是非常强烈的颜色(例如:如果色调为0,则为红色)。值是像素的亮度,所以0是黑色,255是白色。

    我在HSV教程页面上有更多OpenCV RGB到HSV的转换信息,网址为:

    http://www.shervinemami.co.cc/colorConversion.html

        3
  •  3
  •   Adi    14 年前

    OpenCV中没有这样的函数。人脸检测是一个非常复杂的问题,只有很少的方法可以完成这项工作。例如,OpenCV实现了Viola&Jones人脸检测算法,该算法被认为是最好的人脸检测算法之一。其他一些实现使用神经网络等。

    复杂的 场景并不像看上去那么简单。我担心使用面部颜色信息不足以得到稳定的结果。有一些论文提出了这样的技术,但算法工作的条件大多是有限的(例如,每幅图像只有一张脸或非常简单的背景)。