图像的RGB通道显示

来源:互联网 发布:solaris与linux 编辑:程序博客网 时间:2024/05/16 09:24
// HelloOpenCV.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <cv.h>#include <highgui.h>#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) using namespace std;int main(int argc, _TCHAR* argv[]){cvNamedWindow( "RedChannel", 1 );    cvNamedWindow( "GreenChannel", 1 );    cvNamedWindow( "BlueChannel", 1 );IplImage* src = cvLoadImage( "C:\\Users\\lenmovo\\Pictures\\lena.jpg", 1 );    IplImage * RedChannel = cvCreateImage( cvGetSize(src), 8, 1);    IplImage * GreenChannel = cvCreateImage( cvGetSize(src), 8, 1);    IplImage * BlueChannel = cvCreateImage( cvGetSize(src), 8, 1);cvSetZero(RedChannel);cvSetZero(GreenChannel);cvSetZero(BlueChannel);    cvSplit(src,BlueChannel,GreenChannel,RedChannel,0);//显示灰度cvShowImage( "RedChannel", RedChannel );    cvShowImage( "GreenChannel", GreenChannel );    cvShowImage( "BlueChannel", BlueChannel );cvWaitKey(0);IplImage * RedChannel2 = cvCreateImage( cvGetSize(RedChannel),IPL_DEPTH_8U,3);    IplImage * GreenChannel2 = cvCreateImage( cvGetSize(GreenChannel),IPL_DEPTH_8U,3);    IplImage * BlueChannel2= cvCreateImage( cvGetSize(BlueChannel),IPL_DEPTH_8U,3);cvSetZero(RedChannel2);cvSetZero(GreenChannel2);cvSetZero(BlueChannel2);//显示颜色cvMerge(0,0,RedChannel,0,RedChannel2);cvMerge(0,GreenChannel,0,0,GreenChannel2);cvMerge(BlueChannel,0,0,0,BlueChannel2);    cvShowImage( "RedChannel", RedChannel2 );    cvShowImage( "GreenChannel", GreenChannel2 );    cvShowImage( "BlueChannel", BlueChannel2 );    cvWaitKey(0);    cvReleaseImage( &RedChannel );    cvReleaseImage( &GreenChannel );    cvReleaseImage( & BlueChannel );cvReleaseImage( &RedChannel2 );    cvReleaseImage( &GreenChannel2 );    cvReleaseImage( &BlueChannel2 );    return 0;}

 

单通道直接显示是作为灰度显示,

要彩色显示时,需要改为RGB的3通道显示。


 

参考:

http://blog.csdn.net/boyhailong/article/details/7028796

http://blog.csdn.net/xiaowei_cqu/article/details/7558657#comments

原创粉丝点击