cvSplit(),cv图像颜色通道分割和融合

来源:互联网 发布:淘宝保险平台 编辑:程序博客网 时间:2024/05/24 03:21

cvSplit(),用于颜色通道分离

CVAPI(void)  cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1,
                      CvArr* dst2, CvArr* dst3 );

cvMerge(),用于颜色通道合并

CVAPI(void)  cvMerge( const CvArr* src0, const CvArr* src1,
                      const CvArr* src2, const CvArr* src3,
                      CvArr* dst );


原图:



分离出3个通道的单通道图像,再将它们重新融合


#include <highgui.h>using namespace std;int main(){IplImage *pTem = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,1 );IplImage *img = cvLoadImage("test.jpg");IplImage *blue_img = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,1 );IplImage *green_img = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,1 );IplImage *red_img = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,1 );IplImage *all_img = cvCreateImage( cvSize(320,480),IPL_DEPTH_8U,3 );cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);cvShowImage("Example1",img);cvWaitKey(0);cvSplit(img,blue_img,green_img,red_img,0);cvMerge(blue_img,green_img,red_img,0,all_img);cvNamedWindow("Blue_img",CV_WINDOW_AUTOSIZE);cvShowImage("Blue_img",blue_img);cvNamedWindow("Green_img",CV_WINDOW_AUTOSIZE);cvShowImage("Green_img",green_img);cvNamedWindow("Red_img",CV_WINDOW_AUTOSIZE);cvShowImage("Red_img",red_img);cvNamedWindow("All_img",CV_WINDOW_AUTOSIZE);cvShowImage("All_img",all_img);cvWaitKey(0);cvDestroyWindow("Example1");cvDestroyWindow("Blue_img");cvDestroyWindow("Green_img");cvDestroyWindow("Red_img");cvDestroyWindow("All_img");cvReleaseImage( &img );cvReleaseImage( &blue_img );cvReleaseImage( &green_img );cvReleaseImage( &red_img );cvReleaseImage( &all_img );return 0; }


运行结果:




可以用photoshop对照一下单通道的图像


(蓝色通道)


红色通道



0 0