2013-03-29 84 views
1

我想通过打开cv来检测iOS中的皮肤。我的代码在下面提到。打开cv iOS的HSV范围

cvCvtColor(&srcIplImage, &hsvIplImage, CV_BGR2HSV); 

CvScalar lower = cvScalar(0, 58, 88); 
CvScalar upper = cvScalar(25, 173, 229); 

cvInRangeS(&hsvIplImage, lower, upper, &srcGrayIplImage); 

cvCvtColor(&srcGrayIplImage, &dstIplImage, CV_GRAY2BGR); 

在android中,它完美的工作,并正确检测皮肤。但在iOS中,我得到了非常意外的结果。我认为在iOS和Android中,开放式简历有不同的HSV范围。对于android我的下限和上限是可以的,但是iOS不一样。

如果有人遇到这种问题,请帮我解决。

在此先感谢。

回答

3

我已经通过命中和审判整理了问题。正常HSV范围如下所述。

色调:0 - 360(及其的角度) 饱和度:0 - 100(颜色的强度) 值:0 - 100(亮度)

在IOS它具有以下范围内, 色相:0 - 180(及其的角度) 饱和度:0 - 255(颜色的强度) 值:0 - 255(亮度)

Android中

色调:0 - 360(及其一个角度) 饱和度:0 - 255(颜色强度) Value:0 - 255(亮度)

另一个你需要注意的是iOS OpenCV中的颜色方案是BGR而不是RGB。所以Hue部分将覆盖0-60度范围内的蓝色而不是红色。您必须相应地更改iOS的Hue值。

希望使用colorWithHue当范围似乎colorWithHue这可能是别人:)

+0

在我最好的知识有用:0.0 - 1.0饱和度:0.0 - 1.0亮度:0.0 - 1.0阿尔法; 0.0 - 1.0。低于0.0的任何东西都会转换为0.0,高于1.0的任何东西都会转换为1.0。我使用的是iOS 10.3.2,Xcode 8.3.3硬件:Mac mini 10.12.5,iPad mini A1489。 – matrix3003