分离通道 | void cv::split() |
合并通道 | void cv::merge() |
通道混合 | void cv::mixChannels() |
#include<opencv2/opencv.hpp>
#include<iostream>
#include<imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat image = imread("C:/Users/YY/Pictures/Saved Pictures/frose.jpg");
Mat out;
imshow("原图", image);
//通道分离
vector<Mat>bgr;
split(image, bgr);
imshow("Blue", bgr[0]);
imshow("Green", bgr[1]);
imshow("Red", bgr[2]);
//
bgr[0] = 0;
merge(bgr, out);
imshow("out", out);
//通道交换 混合
int from_to[] = { 0,1,1,2,2,0 };//0->1,1->2,2->0
mixChannels(&image, 1, &out, 1, from_to, 3);
imshow("通道交换", out);
waitKey(0);
destroyAllWindows();
return 0;
}
![](https://img-blog.csdnimg.cn/20210627214734569.png)
![](https://img-blog.csdnimg.cn/20210627214747781.png)
![](https://img-blog.csdnimg.cn/20210627214741375.png)
![](https://img-blog.csdnimg.cn/20210627214754828.png)
![](https://img-blog.csdnimg.cn/20210627214800839.png)
![](https://img-blog.csdnimg.cn/20210627214806155.png)