偶然看到opencv中的merge函数,发现与它经常在一起的还有split函数,决定对这两个函数做个试验
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
void main()
{
Mat img = imread("test.jpg");
Mat blue,green,red;
vector<Mat> bluechanel,greenchanel,redchanel;
split(img,bluechanel);
//greenchanel = redchanel = bluechanel;
split(img,greenchanel);
split(img,redchanel);
///
bluechanel[1] =Scalar(0);
bluechanel[2] =Scalar(0);
merge(bluechanel,blue);
imshow("blue",blue);
/
greenchanel[0] = Scalar(0);
greenchanel[2] = Scalar(0);
merge(greenchanel,green);
imshow("green",green);
redchanel[0] = Scalar(0);
redchanel[1] = Scalar(0);
merge(redchanel,red);
imshow("red",red);
/
waitKey(0);
}
前面考虑调用一次split函数后,将bluechanel赋值给其它两个通道,结果是只有蓝色的显示出来,绿色和红色通道都是黑的