Qt-OpenCV学习笔记--基本函数操作--cv::split(图像通道分离)

本文介绍了使用OpenCV进行图像处理时如何通过cv::split()函数分离图像通道,并利用cv::merge()函数进行通道合并的方法。通过示例代码展示了如何读取图像、分离并显示各个颜色通道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

在图像处理中,有时需要对各个通道进行分离,分别处理。
在OpenCV中,cv::split()用于实现图像通道的分离。

另外,cv::merge()用于实现图像通道的合并,是split的逆向操作。

函数

void split
(
    InputArray m,
    OutputArrayOfArrays mv
);
  • m 是输入的需要分离通道的图像。
  • mv 是输出的vector容器,装载不同通道的图像信息。

测试代码

#include "widget.h"
#include "ui_widget.h"

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <vector>

using namespace cv;
using namespace std;

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //载入图片
    cv::Mat src = imread("c:/opencv/111.jpg");
    imshow("src",src);

    //分离
    vector<Mat> channels;
    cv::split(src,channels);

    //接收
    cv::Mat channel_blue = channels.at(0);
    cv::Mat channel_green = channels.at(1);
    cv::Mat channel_red = channels.at(2);

    //显示
    imshow("channel_blue",channel_blue);
    imshow("channel_green",channel_green);
    imshow("channel_red",channel_red);


}

Widget::~Widget()
{
    delete ui;
}

测试结果

参考

OpenCV-通道分离cv::split

【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解

【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数

01_OpenCV的split函数