首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >精确肤色HSV范围

精确肤色HSV范围
EN

Stack Overflow用户
提问于 2012-01-06 05:38:06
回答 9查看 47.1K关注 0票数 9

我见过所有关于HSV肤色空间范围的问题。

但我只知道

码-

代码语言:javascript
复制
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 } )是指当你把手放在红色背景中时,它不会跟踪你的皮肤。

请帮助!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-01-06 10:55:41

基本上,很难有一个固定的肤色范围,因为即使你只想检测你自己的皮肤,它的颜色实际上会有很大的变化取决于光照条件。

所以,也许你可以用这篇2011年的科学文章的观点:

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

基本上,他们检测人脸(这是很容易与oepncv)。然后,他们提取脸部的肤色(这是非常特定于图像上的人)。然后他们用这种颜色来检测皮肤。由于颜色是非常具体的,他们应该有更少的错误检测,比你所拥有的与你的固定的颜色范围。

票数 7
EN

Stack Overflow用户

发布于 2012-01-06 11:22:55

根据这一点:http://matmidia.org/sibgrapi2009/media/posters/59928.pdf

H通道皮肤的特征值在0到50之间,对于亚洲和高加索人种来说,S通道的值在0.23到0.68之间。

对于图像中非常暗的部分,您将不得不格外小心,并且可能会完全丢弃它们,因为HSV转换对于V值很小的值会变得非常嘈杂。

根据您的约束条件,您还可以考虑使用彩色手套(某些颜色不正常出现在场景中),或者设置与红色不同的背景,这与肤色(品红、绿色等)相去甚远。

票数 9
EN

Stack Overflow用户

发布于 2017-03-19 09:56:59

我试过了

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8753833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档