我们可以将图像的BGR颜色空间转换到HSV颜色空间,然后基于HSV颜色空间对图片颜色处理
HSV表示Hue, Saturation, Value,其中Hue范围0~180,Saturation范围0~255,Value范围0~255
那么我们怎么根据HSV颜色空间提取图像中的颜色呢?这里有一个指导(在具体实践中,我们可以根据HSV的直方图作参考)

这里的例子是提取图像中的苹果1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23public static void main(String[] args) {
		Mat img = Imgcodecs.imread("data/apple.jpg");
		Mat imgHSV = new Mat(img.rows(), img.cols(), CvType.CV_8UC3);		
		
		// RGB->HSV
		Imgproc.cvtColor(img, imgHSV, Imgproc.COLOR_BGR2HSV);
		
		
		Scalar lower_hsv = new Scalar(0,90,70);
		Scalar upper_hsv = new Scalar(15,230,255);		
				
		Mat mask = new Mat();
		Core.inRange(imgHSV, lower_hsv, upper_hsv, mask);
		Mat blackImg = new Mat();
		Core.bitwise_and(img, img, blackImg,mask);
		HighGui.imshow("原图", img);
		HighGui.imshow("mask", mask);
		HighGui.imshow("颜色过滤", blackImg);
		HighGui.waitKey(0);
		System.exit(0);
	}



 
      