opencv —— split、merge 通道的分离与合并
对于三通道或四通道图像,有时要对某一通道的像素值进行修改或展示,这就需要进行通道分离操作。修改后,若要进行结果展示,就需要重新将各通道合并。
通道分离:split 函数
void split (InputArray m, OutputArrayOfArrays mv);
- m ,需要进行分离的多通道矩阵,一般为 Mat 类型。
- mv ,用来存储分离后的多个矩阵,可用 vector 容器来存储。
通道合并:merge 函数
void merge(InputArrayOfArrays mv,OutputArray dst);
- mv ,需要被合并的多个矩阵,多使用 vector 容器存储,mv 中所有矩阵必须有着一样的尺寸和深度。
- dst ,输出矩阵,和 m[0] 拥有一样的尺寸和深度,并且通道的数量是矩阵阵列中的通道数总和。
代码示例:
#include<opencv.hpp>
#include<vector>
using namespace cv;
using namespace std;
int main() {
Mat src = imread("C:/Users/齐明洋/Desktop/3.jpg");
vector<Mat>bgr_img;
split(src, bgr_img);
Mat b_img = bgr_img[0];
Mat g_img = bgr_img[1];
Mat r_img = bgr_img[2];
imshow("b_img", b_img);
imshow("g_img", g_img);
imshow("r_img", r_img);
Mat merge_img;
merge(bgr_img, merge_img);
imshow("merge_img", merge_img);
waitKey(0);
}