您的位置:首页 > 运维架构

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: