Opencv hsv颜色范围挑选问题

时间:2015-01-29 02:26:08

标签: java android opencv

我想选择从粉红色到黄色的颜色范围,将范围放在inRange()函数中。但是我只能分别从粉红色到红色和红色到黄色。

对于粉红色到红色,H值从125到255,然后 红色到黄色是0到10。

我应该放入的范围值是多少?

更新#1

在范围内使用的方式是

Core.inRange(mRgba,new Scalar(0,100,30),new Scalar(10,255,255),yellowMat); Core.inRange(mRgba,新标量(125,100,30),新标量(255,255,255),pinkMat);

Scalar不接受大于255的值。

1 个答案:

答案 0 :(得分:1)

或者,您可以对每个H值进行左循环移位125.此后粉红色到红色是0-130,红色到黄色131-141 - >范围是0-141。在inRange()之后不要忘记旋转H频道。

更新#1:
好的,所以有更多的选择。首先:

Core.inRange(mRgba, new Scalar(0, 100, 30), new Scalar(10, 255, 255), yellowMat); 
Core.inRange(mRgba, new Scalar(125, 100, 30), new Scalar(255, 255, 255), pinkMat); 
Core.bitwise_or(yellowMat, pinkMat, pinkToYellowMat);

其次,您可以使用CV_BGR2HSV_FULL计算0..255范围内的Hue通道,然后可以旋转图像的颜色,以便:

Imgproc.cvtColor(imageBgr, imageHsv, CV_BGR2HSV_FULL);
Core.add(imageHsv, new Scalar(-125, 0, 0), imageHsv);
Core.inRange(imageHsv, new Scalar(0, 100, 30), new Scalar(141, 255, 255), pinkToYellowMat);

我无法尝试这些例子。第二个可能不起作用,你写了

  

Scalar不接受大于255的值

并且我不确定它是否可以接受小于零的值。