【发布时间】:2015-11-26 21:07:44
【问题描述】:
我正在尝试匹配 HLS(色相亮度饱和度)中的所有绿色,但没有多大成功。我必须创建一个只包含青椒的图像。来源图片:
我所需要的只是 H、L 和 S 之间的特定部分/依赖关系。我在互联网上搜索过这个但我失败了:(。
为此,我在 Java 中使用 OpenCV。我当前的代码(部分):
private double lsRatio(HLS hls) {
return hls.getL() / hls.getS();
}
private boolean isCondition(HLS hls) {
return hls.getS() >= 0 && lsRatio(hls) > 0.8 && lsRatio(hls) < 5 && (hls.getH() <= 120 || hls.getH() >= 80);
}
对于这种情况,我得到:
如您所见,仍有一些红色。
感谢您的帮助。
【问题讨论】:
-
您的 HLS 计算似乎有误。红色显然不在 80 - 120 色相范围内。或者它实际上在 0-2pi 范围内或 0-1 左右,
-
你的意思是我在将 RGB 转换为 HLS 时遇到问题?
-
是的。这是我的猜测。那些红色根本不符合你的条件。它们大约是 0 色相。
-
好的,但是我使用 OpenCV 的内置函数 Imgproc.cvtColor(source, hlsMat, Imgproc.COLOR_BGR2HLS);请注意,在条件结束时,我使用的是替代,而不是连词。
-
@camickr 感谢您的帮助,但我找到了答案 here :)