1.应用场景
彩色图像是由多个通道构成的,如RGB、YUV、HSV等。
在图像处理中,有时需要对各个通道进行分离,针对各个通道进行分别处理;有时需要对分离处理后的各个通道进行合并操作,作为一个多通道的图像进行处理。
对于图像通道的合并与分离,我们通过Opencv可以很容易实现。
2.涉及函数
2.1 split
- 函数功能
将多通道图像分离成单通道图像序列 - 函数原型
CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);
- 相关参数
InputArray m – 原始图像
OutputArrayOfArrays mv – 分离后的单通道图像序列,我们一般用Vector来存放 - 返回值
无
2.2 merge
- 函数功能
将单通道图像序列合并成多通道图像 - 函数原型
CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst);
- 相关参数
InputArrayOfArrays mv– 单通道图像序列,我们一般用Vector来存放
OutputArray dst – 合并后的多通道图像 - 返回值
无
3.代码实例
- 代码说明
本例主要展示如何对彩色图像进行分离与合并。 - 测试平台
1.开发语言:C++
2.开发工具:VS2015
3.操作系统:Win7 X64 - 具体代码
#include <iostream>
#include <vector>
using namespace std;
#include "cv.h"
#include "opencv2\opencv.hpp"
using namespace cv;
#if _DEBUG
#pragma comment(lib,"opencv_world340d.lib")
#else
#pragma comment(lib,"opencv_world340.lib")
#endif
int main()
{
Mat src = imread("D:\\OpencvTest\\lena.jpg");
if (src.data != NULL)
{
vector<Mat> matVector;
//通道分离
split(src, matVector);
Mat dstMergeMat;
//通道合并
merge(matVector, dstMergeMat);
imshow("原始图像", src);
imshow("B", matVector[0]);
imshow("G", matVector[1]);
imshow("R", matVector[2]);
imshow("合并后图像", dstMergeMat);
cvWaitKey(0);
}
else
{
cout << "图片加载失败,请检查文件是否存在!" << endl;
}
getchar();
return 0;
}
- 输出截图
栏目导航
上一篇:Opencv学习笔记(八) – 图像色彩空间转换
下一篇:无