Splitting multichannel images into RGB using OpenCV
To separate a multi channel image into the three component RGB channels, we can use the cvSplit function. The example below opens a RGB image and then using the cvSplit function creates three output images.
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int _tmain(int argc, _TCHAR* argv[])
{
// open and display input image
IplImage* input = cvLoadImage("test.jpg");
cvNamedWindow("Input", CV_WINDOW_AUTOSIZE);
cvShowImage("Input", input);
// create the output images
IplImage* output_r = cvCreateImage(cvSize(input->width, input->height), input->depth, 1);
IplImage* output_g = cvCreateImage(cvSize(input->width, input->height), input->depth, 1);
IplImage* output_b = cvCreateImage(cvSize(input->width, input->height), input->depth, 1);
// split the image
cvSplit(input, output_r, output_g, output_b,NULL);
// display image
cvNamedWindow("Output R", CV_WINDOW_AUTOSIZE);
cvShowImage("Output R", output_r);
cvNamedWindow("Output G", CV_WINDOW_AUTOSIZE);
cvShowImage("Output G", output_g);
cvNamedWindow("Output B", CV_WINDOW_AUTOSIZE);
cvShowImage("Output B", output_b);
// wait for user
cvWaitKey(0);
// garbage collection
cvReleaseImage(&input);
cvDestroyWindow("Input");
cvReleaseImage(&output_r);
cvDestroyWindow("Output R");
cvReleaseImage(&output_g);
cvDestroyWindow("Output G");
cvReleaseImage(&output_b);
cvDestroyWindow("Output B");
return 0;
}




