java - Opencv HSV颜色范围选取问题

标签 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, new Scalar(125, 100, 30), new Scalar(255, 255, 255), PinkMat);

标量不接受大于 255 的值。

最佳答案

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

更新#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 范围内的色相 channel ,然后可以“旋转”图像的颜色,这样:

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 doesn't accept value that's greater than 255

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

关于java - Opencv HSV颜色范围选取问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206032/

相关文章:

java - 用于 Java 的 OpenCV : HoughCircles finding all the wrong circles

matlab - OpenCV 2.3 相机标定

numpy - 为什么 cv2.calcOpticalFlowFarneback 在简单的合成示例上失败?

java:如果我为变量分配与之前相同的值,它会更改内存还是 JIT 会识别这一点?

Java换行选项

java - 关于 java servlet 过滤器的测验,答案不清楚

java - 使用 logrotate 的垃圾收集器日志 (loggc) 文件轮换无法正常工作

android - Cordova /一般 : Easiest way to develop for different screen layouts?

android - 是否可以动态链接到 libcs​​d-client.so 以在 Galaxy S4 I9505 上启用通话录音

android - 从 onLocationChanged() 更新 MapView