void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );
cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果源图像少于4个通道的情况下,那么传递给cvSplit()的不必要的目标参数可设置为NULL
void cvSetImageROI(IplImage* image,CvRect rect);
image 图像头,待处理图像
rect ROI 矩形
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <cxcore.h>
static IplImage *src = NULL;
static IplImage *dst = NULL;
static IplImage *split[3] = {NULL};
int main(int argv,char **argc)
{
unsigned char i;
if(argv==2&&(src = cvLoadImage(argc[1],1)))
{
for(i=0;i<src->nChannels;i++)
split[i] = cvCreateImage(cvGetSize(src),8,1);
cvSplit(src,split[0],split[1],split[2],NULL);
dst = cvCreateImage(cvSize(src->width*3,src->height),src->depth,1);
cvNamedWindow("MultiImage",1);
cvSetImageROI(dst,cvRect(0,0,src->width,src->height));
cvCopy(split[0],dst,NULL);
cvResetImageROI(dst);
cvSetImageROI(dst,cvRect(src->width,0,src->width,src->height));
cvCopy(split[1],dst,NULL);
cvResetImageROI(dst);
cvSetImageROI(dst,cvRect(src->width*2,0,src->width,src->height));
cvCopy(split[2],dst,NULL);
cvResetImageROI(dst);
cvShowImage("MultiImage",dst);
cvWaitKey(0);
cvReleaseImage(&split[0]);
cvReleaseImage(&split[1]);
cvReleaseImage(&split[2]);
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyAllWindows();
}
return 0;
}