OpenCVForUnity 的版本是 V2.4.9
在这个版本中,OpenCV提供了一个MultiObjectTrackingBasedOnColorExample样例,此样例可以识别拍摄区域的颜色并依据颜色区分多个物体。效果如图:
通过查看源码发现,如果我想更改或者添加更多的识别颜色,我需要去设置新添加的颜色的HSV范围,在源码的注释中提到要通过"calibration mode"去查找颜色的HSV min和HSV max。
我想问的是,这个"calibration mode"在哪里?以及这个Scalar变量初始化的三个参数分别对应的就是HSV的值吗?
public ColorObject (string name)
{
setType (name);
if (name == "blue") {
//TODO: use "calibration mode" to find HSV min
//and HSV max values
setHSVmin (new Scalar (92, 0, 0));
setHSVmax (new Scalar (124, 256, 256));
//BGR value for Green:
setColor (new Scalar (0, 0, 255));
}
if (name == "green") {
//TODO: use "calibration mode" to find HSV min
//and HSV max values
setHSVmin (new Scalar (34, 50, 50));
setHSVmax (new Scalar (80, 220, 200));
//BGR value for Yellow:
setColor (new Scalar (0, 255, 0));
}
if (name == "yellow") {
//TODO: use "calibration mode" to find HSV min
//and HSV max values
setHSVmin (new Scalar (20, 124, 123));
setHSVmax (new Scalar (30, 256, 256));
//BGR value for Red:
setColor (new Scalar (255, 255, 0));
}
if (name == "red") {
//TODO: use "calibration mode" to find HSV min
//and HSV max values
setHSVmin (new Scalar (0, 200, 0));
setHSVmax (new Scalar (19, 255, 255));
//BGR value for Red:
setColor (new Scalar (255, 0, 0));
}
}