opencv学习笔记-split分离和merge合并操作
2018-03-28 09:31
453 查看
opencv中split函数和merge函数是一对互逆的操作,split可以把一幅图像各个通道分离开,经过对各个通道单独操作后可以用merge函数合并。若要显示单独一个通道的值要把另外两个通道清0再合并,再显示出单通道图片。
split 函数:C++: void split(const Mat& src, Mat*mvbegin);
C++: void split(InputArray m,OutputArrayOfArrays mv);
第一个参数为要进行分离的图像矩阵,第二个参数可以是Mat数组的首地址,或者一个vector<Mat>对象;
merge函数:C++: void merge(const Mat* mv, size_tcount, OutputArray dst)
C++: void merge(InputArrayOfArrays mv,OutputArray dst)第一种:第一个参数是图像矩阵数组,第二个参数是需要合并矩阵的个数,第三个参数是输出。
第二种:第一个参数是图像矩阵向量容器,第二个参数是输出,这种方法无需说明需要合并的矩阵个数,vector对象自带说明。
后面为一个小例子的代码:#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
Mat src = imread("E:/picture/teengirl.jpg");
imshow("Input img", src);
vector<Mat> bgr;
split(src, bgr);
Mat b_img = bgr.at(0);
Mat g_img = bgr.at(1);
Mat r_img = bgr.at(2);
Mat b_fuzhu=Mat(src.size(), CV_8UC1, Scalar(0));
vector<Mat> merg_img(3);
merg_img[0] = b_img;
merg_img[1] = b_fuzhu;
merg_img[2] = b_fuzhu;
Mat imgB(src.size(),src.type());
Mat imgG(src.size(), src.type());
merge(merg_img, imgB);
imshow("B", imgB);
imshow("Out", src);
waitKey(0);
return 0;
}
split 函数:C++: void split(const Mat& src, Mat*mvbegin);
C++: void split(InputArray m,OutputArrayOfArrays mv);
第一个参数为要进行分离的图像矩阵,第二个参数可以是Mat数组的首地址,或者一个vector<Mat>对象;
merge函数:C++: void merge(const Mat* mv, size_tcount, OutputArray dst)
C++: void merge(InputArrayOfArrays mv,OutputArray dst)第一种:第一个参数是图像矩阵数组,第二个参数是需要合并矩阵的个数,第三个参数是输出。
第二种:第一个参数是图像矩阵向量容器,第二个参数是输出,这种方法无需说明需要合并的矩阵个数,vector对象自带说明。
后面为一个小例子的代码:#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
Mat src = imread("E:/picture/teengirl.jpg");
imshow("Input img", src);
vector<Mat> bgr;
split(src, bgr);
Mat b_img = bgr.at(0);
Mat g_img = bgr.at(1);
Mat r_img = bgr.at(2);
Mat b_fuzhu=Mat(src.size(), CV_8UC1, Scalar(0));
vector<Mat> merg_img(3);
merg_img[0] = b_img;
merg_img[1] = b_fuzhu;
merg_img[2] = b_fuzhu;
Mat imgB(src.size(),src.type());
Mat imgG(src.size(), src.type());
merge(merg_img, imgB);
imshow("B", imgB);
imshow("Out", src);
waitKey(0);
return 0;
}
相关文章推荐
- 学习OpenCV彩色图像的通道的分离(split)与合成(merge)
- 【OpenCV笔记 08】OpenCV中分离颜色通道split()和图像通道混合merge()
- opencv之split和merge分离通道和合并多通道的用法
- 【基于C++和Python的Opencv3学习笔记之颜色空间缩减、ROI提取及多通道分离合并】
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- 【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解
- 【OpenCV学习笔记】十二、图像的对比度和亮度调整及图像通道的分离与合并
- opencv2学习笔记4-操作图像(图像锐化-拉普拉斯算子)
- 0714学习笔记list常用操作索引(index)和切片(slice) 字符串的方法分割split和连接join
- TinyOS学习笔记5-Split-Phase操作
- OpenCV学习笔记-形态学操作-腐蚀膨胀-开闭运算
- opencv学习笔记(二十一)——阈值操作
- OpenCV学习笔记(五)图像掩码操作
- opencv学习笔记(3) 锐化图像 邻域操作 ROI
- OpenCV学习笔记(十) 直方图操作
- OpenCV学习笔记 Mat数据操作之普通青年、文艺青年、暴力青年
- [OpenCV学习笔记][Mat数据类型和操作]
- OpenCV学习(十四)之彩色图像RGB通道的分离、合并与显示
- OpenCV学习笔记:矩阵的掩码操作
- OpenCV 学习 (Split 和 Merge)