// 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.youkuaiyun.com/boyhailong/article/details/7028796
http://blog.youkuaiyun.com/xiaowei_cqu/article/details/7558657#comments