OpenCV-通道分离cv::split

Posted 翟大宝Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-通道分离cv::split相关的知识,希望对你有一定的参考价值。

函数原型

void split(InputArray m, OutputArrayOfArrays mv);

参数说明

  1. InputArray类型的m,输入的需要分离通道的图像。
  2. OutputArrayOfArrays的mv,输出的vector容器,装载不同通道的图像信息。

       OpenCV是BGR色彩空间,第一个通道是蓝色通道Blur,第二个通道是绿色通道Green,第三个通道是红色通道Red,和我们传统意义上的RGB相反,注意一下哦~

测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
	// 读取图片
	Mat src = imread("tangsan.jpg");//imread()函数载入图像
	// 判断是否为空
	if (src.empty())
	{
		cout << "Can not load image\\n" << endl;//
		return -1;
	}
	// vector创建三通道Mat
	vector<cv::Mat> channels;
	cv::split(src, channels);
	// OpenCV的BGR色彩空间同传统意义的RGB相反,所以1通道是Blue蓝,2通道是Green绿,3通道是Red红
	// 蓝通道削弱,再合并,看图片效果
	channels[0] = channels[0] / 2;
	cv::Mat result;
	cv::merge(channels, result);

	imshow("original", src);
	imshow("result", result);
	waitKey(0);
	system("pause");
	return 0;
}

测试效果

图1 图像三通道数据示意图
图2 图像单通道数据示意图
图3 单通道处理后的效果图

       如上图所示,图像一般是三通道的矩阵数据,通道分离后,三个通道分别成为一个灰度图像,对蓝色通道数据除以2,相当于削弱了原图的蓝通道信息比例,效果图更暖色系~

       通道分离除了处理图像,也经常用于数据计算,最常见的就是复数的计算,后面会写相关的文章介绍具体的应用场景,比如FFT傅里叶变换。

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

以上是关于OpenCV-通道分离cv::split的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 函数学习11-图像通道的拆分(cv2.split)

OpenCV通道的分离和合并

Opencv 图像处理:图像通道直方图与色彩空间

OpenCV python:在 BGR 图像中获取通道时 cv2.split() 与切片

在 OpenCV 中从 RGB 图像访问通道的更快方法?

OpenCV RGB 单通道颜色调节