Opencv学习笔记(九) -- 图像色彩通道的分离与合并

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学习笔记(八) – 图像色彩空间转换
下一篇:无

猜你喜欢

转载自blog.csdn.net/u014337397/article/details/80835016