OpenCV-通道合并cv::merge

简介: OpenCV-通道合并cv::merge

函数原型

1. void merge(const Mat* mv, size_t count, OutputArray dst);
2. void merge(InputArrayOfArrays mv, OutputArray dst);

参数说明

  1. 第一个参数mv,输入合并的图像阵列,一般用vector。
  2. 第二个参数count,代表需要合并的矩阵个数
  3. 第三个参数dst,输出矩阵。

      merge是split函数的逆向操作,将多个数组组合成更多通道数的多通道数组。

测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
  // 读取图片
  Mat src = imread("tangsan.jpg");//imread()函数载入图像
  // 判断是否为空
  if (src.empty())
  {
    cout << "Can not load image\n" << endl;//
    return -1;
  }
  // vector创建三通道Mat
  vector<cv::Mat> channels;
  cv::split(src, channels);
  // OpenCV的BGR色彩空间同传统意义的RGB相反,所以1通道是Blue蓝,2通道是Green绿,3通道是Red红
  // 蓝通道削弱,再合并,看图片效果
  channels[0] = channels[0] / 2;
  cv::Mat result;
  cv::merge(channels, result);
  imshow("original", src);
  imshow("result", result);
  waitKey(0);
  system("pause");
  return 0;
}

测试效果

图1 图像三通道数据示意图

图2 图像单通道数据示意图

图3 单通道处理后的效果图

      如上图所示,先将图像分离成单通道进行处理,再用merge函数合并起来称为新的图像。


      通道合并除了处理图像,也经常用于数据计算,最常见的就是复数的计算,后面会写相关的文章介绍具体的应用场景,比如FFT傅里叶变换。


      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章
|
1天前
|
计算机视觉 Python
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
146 0
|
1天前
|
计算机视觉
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
|
1天前
|
计算机视觉 开发者 Python
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
101 0
|
1天前
|
计算机视觉 Python
OpenCV 4基础篇| OpenCV图像的拆分和合并
OpenCV 4基础篇| OpenCV图像的拆分和合并
|
7月前
|
计算机视觉
OpenCV-模板匹配cv::matchTemplate
OpenCV-模板匹配cv::matchTemplate
|
7月前
|
计算机视觉
OpenCV-矩形边框cv::boundingRect
OpenCV-矩形边框cv::boundingRect
|
1天前
|
计算机视觉 Python
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
48 0
|
1天前
|
计算机视觉
OpenCV(六):多通道分离与合并
OpenCV(六):多通道分离与合并
40 0
|
7月前
|
算法 计算机视觉
OpenCV-漫水填充cv::floodFill
OpenCV-漫水填充cv::floodFill
|
7月前
|
计算机视觉
OpenCV-最小包围旋转矩形边框cv::minAreaRect
OpenCV-最小包围旋转矩形边框cv::minAreaRect