OpenCV是个非常强大的开源视觉库,对于我这样从事视频图像处理的人来说,真的太好了,今天在图像处理的时候,突然想看看彩色图的RGB通道,于是查找了下资料,就动手了,代码如下:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include <cxcore.h>
#include <iostream>
#include <string>
#include<cassert>
using namespace cv;
using namespace std;
void main(int argc,char **argv)
{
vector<Mat> channels,b,g,r;
Mat img=imread("lena.png");
Mat merge_img,dst,dst1,dst2;
Mat tmp(img.size(),CV_8U,Scalar(0));
split(img,channels);
for(int i=0;i<3;i++)
{
if(i==0)
b.push_back(channels[0]);
else
b.push_back(tmp);
if(i==1)
g.push_back(channels[1]);
else
g.push_back(tmp);
if(i==2)
r.push_back(channels[2]);
else
r.push_back(tmp);
}
//Mat imageBlue = channels.at(0);
//Mat imageGreen= channels.at(1);
//Mat imageRed = channels.at(2);
merge(b,dst);
merge(g,dst1);
merge(r,dst2);
merge(channels,merge_img);
namedWindow("Img_R",CV_WINDOW_AUTOSIZE);
namedWindow("Img_G",CV_WINDOW_AUTOSIZE);
namedWindow("Img_B",CV_WINDOW_AUTOSIZE);
namedWindow("Img",CV_WINDOW_AUTOSIZE);
imshow("Img_B",dst);
imshow("Img_G",dst1);
imshow("Img_R",dst2);
imshow("Img",merge_img);
waitKey(0);
//addWeighted(imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)),0.5,logoImage,0.5,0.,imageBlue(Rect(0,0,logoImage.cols,logoImage.rows)));
}
下图为效果图: