OpenCV Mat颜色通道分离,各通道合图显示

2019-09-01 20:31

OpenCV Mat图像颜色通道分离(split)合成(merge),各通道合图显示.

#include #include #include #include

using namespace cv; using namespace std;

int main( int argc, char** argv ) {

FreeConsole(); if( argc != 2) {

std::cout <<\请输入需要加载的文件!\ << std::endl;

//Hide the CMD window

return -1; }

//读取图像 Mat image;

char * imageName = argv[1];

image = imread(imageName, CV_LOAD_IMAGE_COLOR);// Read the file if(! image.data ) // Check for invalid input {

}

std::cout << \文件加载失败,请检查!\ << std::endl ; return -1;

//灰度图 Mat grayImage;

cvtColor(image,grayImage,CV_RGB2GRAY);//Coonvert the image from RGB to Grayscale format //显示用 Mat display; int w = image.cols; int h = image.rows;

display.create (h*2,w*2,CV_8UC3); //黑色 Mat bk;

bk.create(h,w,CV_8UC1); bk = Scalar(0); //显示框

Mat m(display,Rect(0,0,w,h)); Mat m1(display,Rect(0,h,w,h)); Mat m2(display,Rect(w,0,w,h)); Mat m3(display,Rect(w,h,w,h)); Mat m4(display,Rect(w/2,h/2,w,h)); //通道分离用

std::vector sbgr(image.channels()); //通道合成用

std::vector mbgr(image.channels()); //分离

split(image,sbgr); //split to sbgr[0] ,sbgr[1] ,sbgr[2] //合成到显示-灰度 mbgr[0] = grayImage; mbgr[1] = grayImage; mbgr[2] = grayImage; merge(mbgr,m); //合成到显示-B mbgr[0] = sbgr[0]; mbgr[1] = bk; mbgr[2] = bk; merge(mbgr,m1); //合成到显示-G mbgr[0] = bk; mbgr[1] = sbgr[1]; mbgr[2] = bk; merge(mbgr,m2); //合成到显示-R mbgr[0] = bk;

mbgr[1] = bk; mbgr[2] = sbgr[2]; merge(mbgr,m3); //复制到显示-原图 image.copyTo (m4); //显示

namedWindow( imageName,CV_WINDOW_NORMAL);// Create a window for display. resizeWindow(imageName,w*2,h*2);

imshow( imageName, display); // Show our image inside it. waitKey(0);

return 0;

}

// Wait for a keystroke in the window


OpenCV Mat颜色通道分离,各通道合图显示.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:材料科学基础 期末考试 历届考试试题 复习资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: