OpenCv java 颜色空间(9)

个人理解

我们常了解到的颜色空间是RGB,是一个三维的分别标识红,绿,蓝

这个颜色空间可以标识我们生活中常见常见到的大部分颜色,可以描述255*255*255>1600万

GRAY灰度也是一个空间,是一个维度的线行空间

0是黑色 255是白色,中间的值介于0和255之间,我们称为灰色,当然不同的值灰色程度是不一样的

除了上面的颜色空间之外还有其他的颜色空间,比如:HSV,HLS,YUV...,颜色空间是独立的,并且是不同的学者提出

OpenCV和颜色空间

在opencv中提供了一个函数cvtColor,可以将一张图片在不同的两个颜色空间之下转换

	Imgproc.cvtColor(src, dst, code);
	Imgproc.cvtColor(src, dst, code, dstCn);

src 标识输入的图像

dst标识输出图像

code转换标识

dstCn–目标映像中的通道数;如果参数为0,则通道数将自动从src和code派生

其中转换标识就是我们要将颜色空间转换的成目标颜色空间,在Imgproc中提供了很多转换标识

灰度化

灰度化是最常用的颜色空间转换 RGB=>GRAY

	    Mat src = Imgcodecs.imread(filename);
		Mat dst1=new Mat();
		Mat dst2=new Mat();
		
	
		Imgproc.cvtColor(src, dst1,Imgproc.COLOR_RGB2GRAY);

		HighGui.imshow("原图",src);
		
		HighGui.imshow("灰度化",dst1);

RGB=>HLS:

		String filename = "D:\\svnp\\MyYan\\res\\drawable\\222.png";

		Mat src = Imgcodecs.imread(filename);
		Mat dst1=new Mat();
		Mat dst2=new Mat();
		
		
		
		Imgproc.cvtColor(src, dst1,Imgproc.COLOR_RGB2HLS);

		HighGui.imshow("原图",src);
		
		HighGui.imshow("HLS",dst1);

 HLS=>RGB

		String filename = "D:\\svnp\\MyYan\\res\\drawable\\222.png";
		Mat src = Imgcodecs.imread(filename);
		Mat dst1=new Mat();
		Mat dst2=new Mat();
		Imgproc.cvtColor(src, dst1,Imgproc.COLOR_RGB2HLS);
		Imgproc.cvtColor(dst1,dst2,Imgproc.COLOR_HLS2RGB);
		HighGui.imshow("原图",src);
		HighGui.imshow("HLS",dst1);
		HighGui.imshow("HLS=>RGB",dst2);

 

我们可以发现从RGB转换到颜色空间HLS ,再一次的从HLS转换为RGB获取到的图片和原图是一样的,也就是有些是可以转变回去,但是有些却没办法转换回去比如从GRAY 就没办法到RGB ,这个和颜色空间颜色表示的范围有一定的关系,灰度空间只能表示255颜色,但是RGB 表示1600多万,所以当我们从GRAY=>RGB时候,我们看到的图像和在GRAY是一样的

上面就是我里面的opencv的颜色空间转换函数cvtColor 希望对你有所帮助

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值