概述
在图像处理中,有时需要对各个通道进行分离,分别处理。
在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;
}
测试结果
参考
【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解