1

我正在尝试通过打开的 cv 检测 iOS 中的皮肤。我的代码如下所述。

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 中的 open cv 使用了不同范围的 HSV。对于 android,我的下限和上限都可以,但对于 iOS 则不然。

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

提前致谢。

4

1 回答 1

3

我已经通过命中和试验解决了这个问题。正常 HSV 范围如下所述。

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

在 iOS 中,它具有以下范围,色调:0 - 180。(它的角度)饱和度:0 - 255(颜色强度)值:0 - 255(亮度)

在安卓中

色调:0 - 360。(角度)饱和度:0 - 255(颜色强度)值:0 - 255(亮度)

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

希望这对其他人有用:)

于 2013-03-30T08:37:48.930 回答