0 前言
很多时候,图片上有两种泾渭分明的颜色,我们只想提取其中一种做处理,那该怎么办呢?可以使用颜色来过滤。
1 基本思想
使用hsv色彩空间。h可以帮助我们确定颜色是属于哪一个空间的,大体属于红色还是蓝色。然后,设置两个阈值,过滤每一个像素,不符合条件的通通变黑。
这是部分关键代码,其实内容不多,执行完毕后,内容就变成黑白的了。如果想在原图像上,框出来,可以利用这个获取的黑白图,作为mask。:
Mat binaryMat = new Mat();
// Imgproc.cvtColor(dstmat, binaryMat, Imgproc.COLOR_BGR2GRAY);
hsvMat = srcmat1.clone();
// Mat resultMat = new Mat();
Imgproc.cvtColor(srcmat1, hsvMat, Imgproc.COLOR_BGR2HSV);
Core.inRange(hsvMat, new Scalar(110, 0, 0), new Scalar(160, 255, 255), srcmat1);
教程1这个帖子一定要仔细看
2 如何确定阈值
我使用笨办法
调节h的值,然后查看下面的图,看能识别哪类颜色,就向我想要的方向改变参数。
一个颜色过滤其他的参考