我见过所有关于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);Problem ({ 0,30,60,0 & 20,150,255,0 } )是指当你把手放在红色背景中时,它不会跟踪你的皮肤。
请帮助!
发布于 2012-01-06 10:55:41
基本上,很难有一个固定的肤色范围,因为即使你只想检测你自己的皮肤,它的颜色实际上会有很大的变化取决于光照条件。
所以,也许你可以用这篇2011年的科学文章的观点:
http://www.robots.ox.ac.uk/~vgg/research/hands/
基本上,他们检测人脸(这是很容易与oepncv)。然后,他们提取脸部的肤色(这是非常特定于图像上的人)。然后他们用这种颜色来检测皮肤。由于颜色是非常具体的,他们应该有更少的错误检测,比你所拥有的与你的固定的颜色范围。
发布于 2012-01-06 11:22:55
根据这一点:http://matmidia.org/sibgrapi2009/media/posters/59928.pdf
H通道皮肤的特征值在0到50之间,对于亚洲和高加索人种来说,S通道的值在0.23到0.68之间。
对于图像中非常暗的部分,您将不得不格外小心,并且可能会完全丢弃它们,因为HSV转换对于V值很小的值会变得非常嘈杂。
根据您的约束条件,您还可以考虑使用彩色手套(某些颜色不正常出现在场景中),或者设置与红色不同的背景,这与肤色(品红、绿色等)相去甚远。
发布于 2017-03-19 09:56:59
我试过了
lower = np.array([0, 10, 60], dtype = "uint8") upper = np.array([20, 150, 255], dtype = "uint8")给出了几乎很好的效果。
https://stackoverflow.com/questions/8753833
复制相似问题