我已经看到所有关于皮肤的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,0& 20,150,255,0} )它是否检测到红色,当您将手放在红色背景中时,它不会跟踪您的皮肤...
请帮忙!!!
答案 0 :(得分:8)
根据这个:http://matmidia.org/sibgrapi2009/media/posters/59928.pdf
H通道的皮肤特征为0到50之间的值,在通道S中为亚洲和高加索人种的0.23到0.68。
你必须特别注意图像中非常暗的部分,并且可能完全丢弃它们,因为对于较小的V值,HSV转换会非常嘈杂。
根据您的约束条件,您还可以考虑使用彩色手套(某些颜色在场景中没有正常显示),或设置不同于红色的背景,即远离肤色(洋红色) ,绿色,等等。
答案 1 :(得分:7)
基本上,皮肤很难有一个固定的颜色范围,因为即使你只想检测自己的皮肤,它的颜色实际上会根据光照条件发生很大变化。
所以,也许你可以使用2011年这篇不错的科学文章的想法:
http://www.robots.ox.ac.uk/~vgg/research/hands/
基本上,他们会检测到脸部(使用oepncv很容易)。然后,他们提取脸部的肤色(这是图像上的人非常特定)。然后他们用这种颜色检测皮肤。由于颜色非常具体,因此与固定颜色范围相比,它们的错误检测要少得多。
答案 2 :(得分:5)
我知道回复这个为时已晚。但我也这样做,我用K意味着聚类来获得肤色。首先你必须检测面部,我正在使用Haar级联分类器,然后根据面部的坐标你可以裁剪面部,然后使用它作为聚类颜色的源。找出具有最多元素且将是您的肤色的群集。或者,如果没有指定一个特定值,您可以获得群集中心点,并且可以通过扣除和添加特定值将其用作范围。 这将有所帮助http://answers.opencv.org/question/23196/k-mean-clustering-of-hsv-histogram-of-frames-of-a-video/
答案 3 :(得分:3)
OpenCv上存在自适应皮肤检测器 参见samples / c / adaptiveskindetector_sample.cpp
答案 4 :(得分:2)
我试过了
lower = np.array([0, 10, 60], dtype = "uint8")
upper = np.array([20, 150, 255], dtype = "uint8")
它给出了几乎不错的结果。
答案 5 :(得分:2)
在您的代码中尝试使用此预处理功能:
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
我已经使用了几个月了。它可能会永远解决您的问题。
答案 6 :(得分:1)
如果您使用视频字幕,您应该担心在大多数情况下相机会自动进行对比度调整,这会对您的图像产生影响,因为您将会有明显的色调差异,您也应该考虑影响皮肤的阴影和光源
答案 7 :(得分:1)
Deepgaze是一个除了其他功能外还具有皮肤检测功能的库。
他使用:
[0, 58, 50] lower bound skin HSV
[30, 255, 255] upper bound skin HSV
他对Github非常敏感,因此可以选择与他联系并询问他如何得出这些数字。