通道分离与合并
#include<iostream>
#include<opencv2/opencv.hpp>
#include<vector>
using namespace std;
using namespace cv;
//通道分离与合并
void channels_demo(Mat& image)
{
vector<Mat>mv;
//分离
split(image, mv);
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
//合并
Mat dst;
mv[0] = 0;
mv[1] = 0;
merge(mv, dst);
imshow("红色", dst);
int from_to[] = { 0,2,1,1,2,0 };
mixChannels(&image, 1,&dst, 1, from_to, 3);
imshow("通道相互操作", dst);
}
int main()
{
string path = "C:\\Users\\四明\\Pictures\\QQ图片20200608155343.jpg";
Mat img = imread(path);
if (img.empty())
{
cout << "图片加载失败!" << endl;
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", img);
channels_demo(img);
waitKey(0);
destroyAllWindows();
return 0;
}
效果图