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); }

 

posted @ 2020-02-10 19:35  狂奔的小学生  阅读(681)  评论(0编辑  收藏  举报