学习OpenCV彩色图像的通道的分离(split)与合成(merge)

#include "cv.h"
#include "highgui.h"
using namespace cv;


int main()
{
 Mat src = imread("picture.bmp",-1); 
 namedWindow("picture",1);
 imshow("picture",src);

 Mat tmp0 = Mat(src.cols,src.rows,CV_8U,Scalar::all(0));
 Mat tmp1 = Mat(src.cols,src.rows,CV_8U,Scalar::all(0));
 Mat tmp2 = Mat(src.cols,src.rows,CV_8U,Scalar::all(0));
 vector<Mat> mv;
 mv.push_back(tmp0);
 mv.push_back(tmp1);
 mv.push_back(tmp2);
 split(src,mv);

 Mat blue = mv.at(0);
 Mat green = mv.at(1);
 Mat red = mv.at(2);

 imshow("blue",blue);
 imshow("green",green);
 imshow("red",red);

 Mat r,g,b;

 equalizeHist(blue,b);
 equalizeHist(green,g);
 equalizeHist(red,r);

 vector<Mat> re;
 re.push_back(b);
 re.push_back(g);
 re.push_back(r);

 Mat dst;
 merge(re,dst);
 imshow("dst",dst);

 waitKey();
 return 0;

}

猜你喜欢

转载自blog.csdn.net/windydreams/article/details/8046392