您现在的位置是:首页 >技术交流 >opencv_c++学习(七)网站首页技术交流

opencv_c++学习(七)

小小小~ 2024-06-17 10:26:08
简介opencv_c++学习(七)

一、图像颜色空间变换

一、图像颜色空间介绍

RGB颜色模型

具体的体现样式如下:
在这里插入图片描述
在opencv中有可以实现数据类型的转换接口,如下:

Mat:convertTo (OutputArray m, int rtype, alpha, double 1, double beta)

实现如下:

a.convertTo(b, CV_32F, 1/255.0, 0)

m:输出图像。
rtype:转换后数据类型
alpha:缩放系数
beta:平移系数

HSV颜色模型

具体的体现样式如下:
在这里插入图片描述

GRAY颜色模型

在这里插入图片描述

不同颜色空间互相转换

颜色转换的接口如下:

cvtColor(InputArray src, OutputArray dst,int code,int dstCn = 0

src:待转换颜色模型的原始图像。
dst:转换颜色模型后的目标图像。
code:颜色空间转换的标志,如由RGB空间到HSV空间。
dstCn:目标图像中的通道数,如果参数为0,则从src和代码中自动导出通道数。
样例代码如下:

	 Mat src = imread("图片1.png");

	 Mat img;

	//将数据格式进行转换
	src.convertTo(img, CV_32F, 1 / 255.0, 0);

	Mat HSV, HSV32;
	
	//对颜色格式进行转换
	cvtColor(src, HSV, COLOR_BGR2HSV);	 
	cvtColor(src, HSV32, COLOR_BGR2HSV);

二、多通道的分离与合并

多通道的分离

分离的接口如下:

split(InputArray m, OutputArrayOfArrays mv)

m:待分离的多通道图像
mv:分离后的单通道图像,为向量vector形式

多通道合并

merge (lnputArrayOfArrays mv, OutputArray dst)

mv:需要合并的图像向量vector,其中每个图像必须拥有相同的尺寸和数据类型。
dst:合并后输出的图像,通道数等于所有输入图像的通道数总和。

样例如下:
拆分通道

	Mat src = imread("图片1.png");

	Mat img;

	 //分离数组
	Mat imgs[3];
	split(src, imgs);

	Mat img0, img1, img2;

	img0 = imgs[0];
	img1 = imgs[1];
	img2 = imgs[2];

	return 0;

合并通道

	Mat img2;
	merge(imgs, 3, img2);

	Mat img0, img1, img2;

	img0 = imgs[0];
	img1 = imgs[1];
	img2 = imgs[2];

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。