我试图匹配HLS(Hue Lightness Saturation)中的所有绿色,但没有太大的成功。我必须创建一个只包含青椒的图像。来源图片:
我需要的只是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);
}
对于这种情况,我得到:
正如你所看到的,还有一些红色。
感谢您的帮助。
答案 0 :(得分:0)
我认为转换为HLS很好。我尝试使用HSL Color转换并获得相同的结果。
(hls.getH() <= 120 || hls.getH() >= 80)
这将包括所有颜色。 (包括红色 - 即0小于120)。您的其他条件是过滤掉大部分读取音调/阴影。
我尝试了一些更简单的方法:
private boolean isCondition(HLS hls)
{
if (hls.getH() < 60 || hls.getH() > 140)
return false;
return true;
}
我最初尝试了80 - 120的范围,但它错过了很多颜色。也许60 -140包含太多非绿色,在这种情况下,您可以尝试应用其他条件来排除更多颜色。