确切的肤色HSV范围
computer-vision
image-processing
opencv
6
0

我已经看到所有关于皮肤HSV颜色空间范围的问题
但我只能弄清楚

代码-

CvScalar  hsv_min = cvScalar(0, 30, 60, 0);
CvScalar  hsv_max = cvScalar(20, 150, 255, 0);
//range I am using is { 0,30,60,0 & 20,150,255,0 }
cvCvtColor(src, hsv_image, CV_BGR2HSV);
cvInRangeS (hsv_image, hsv_min, hsv_max, hsv_mask);
cvDilate(hsv_mask,hsv_mask,0,1);
cvErode(hsv_mask,hsv_mask,0,1);
cvSmooth( hsv_mask, hsv_mask, CV_MEDIAN);

与此范围内({0,30,60,020,150,255,0}) 问题它甚至可以检测红色,当你把你的手在红色背景也不会跟踪你的皮肤...
请帮忙 !!!

参考资料:
Stack Overflow
收藏
评论
共 6 个回答
高赞 时间 活跃

据此: http : //matmidia.org/sibgrapi2009/media/posters/59928.pdf

通道H中的皮肤的特征是介于0到50之间的值,对于亚裔和高加索族裔,通道S中的皮肤从0.23到0.68。

您必须格外小心处理图像的非常暗的部分,并可能将其完全丢弃,因为HSV转换对于较小的V值会产生很大的噪声。

根据您的约束条件,您还可以考虑使用彩色手套(某些颜色在场景中无法正常显示),或将背景设置为与红色不同的颜色,该颜色与肤色(品红色,绿色,随你)。

收藏
评论

OpenCv上存在自适应皮肤检测器,请参见samples / c / adaptiveskindetector_sample.cpp

收藏
评论

在您的代码中尝试以下预处理功能:

def preprocess(action_frame):

    blur = cv2.GaussianBlur(action_frame, (3,3), 0)
    hsv = cv2.cvtColor(blur, cv2.COLOR_RGB2HSV)

    lower_color = np.array([108, 23, 82])
    upper_color = np.array([179, 255, 255])

    mask = cv2.inRange(hsv, lower_color, upper_color)
    blur = cv2.medianBlur(mask, 5)

    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (8, 8))
    hsv_d = cv2.dilate(blur, kernel)

return hsv_d

我已经使用了几个月了。它可能会永远解决您的问题。

收藏
评论

我努力了
lower = np.array([0, 10, 60], dtype = "uint8") upper = np.array([20, 150, 255], dtype = "uint8")它给出了几乎很好的结果。

收藏
评论

基本上,很难为皮肤设置一个固定的颜色范围,因为即使您只想检测自己的皮肤,其颜色实际上也会根据光照条件发生很大变化。

因此,也许您可以使用2011年这篇出色的科学文章的想法:

http://www.robots.ox.ac.uk/~vgg/research/hands/

基本上,他们会检测人脸(使用oepncv很容易)。然后,他们提取脸部的皮肤颜色(这对于图像上的人来说是非常特定的)。然后他们使用这种颜色检测皮肤。由于颜色是非常特定的,因此与固定颜色范围内的颜色相比,它们应该少得多的错误检测。

收藏
评论

我知道现在回答这个问题为时已晚。但是我也一样,我用K表示聚类以获得肤色。首先,您必须检测到我使用Haar级联分类器进行的面部处理,然后根据面部的坐标来裁剪面部,然后将其用作对颜色进行聚类的来源。找出具有最多元素并且将是您的肤色的群集。或者不指定一个特定值,您就可以获取聚类中心点,并且可以通过减去并添加一个特定值来将其用作范围。这将对http://answers.opencv.org/question/23196/k-mean-clustering-of-hsv-histogram-of-frames-of-a-video/有帮助

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号