OpenCV-通道合并cv::merge
Posted 翟大宝Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-通道合并cv::merge相关的知识,希望对你有一定的参考价值。
函数原型
void merge(const Mat* mv, size_t count, OutputArray dst);
void merge(InputArrayOfArrays mv, OutputArray dst);
参数说明
- 第一个参数mv,输入合并的图像阵列,一般用vector。
- 第二个参数count,代表需要合并的矩阵个数
- 第三个参数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;
}
测试效果
如上图所示,先将图像分离成单通道进行处理,再用merge函数合并起来称为新的图像。
通道合并除了处理图像,也经常用于数据计算,最常见的就是复数的计算,后面会写相关的文章介绍具体的应用场景,比如FFT傅里叶变换。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
以上是关于OpenCV-通道合并cv::merge的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中使用 OpenCV 合并 2 个灰度图像
机器学习进阶-图片基本处理-ROI区域 1.img[0:200, 0:200]截取图片 2.cv2.split(对图片的颜色通道进行拆分) 3. cv2.merge(将颜色通道进行合并) 4 c