opencv学习笔记(十八)cvSplit()、cvMerge()彩色图片通道分割与融合

来源:互联网 发布:江歌的遇害事件知乎 编辑:程序博客网 时间:2024/05/10 15:47

18.1cvSplit()

cvSplit()是openCV中的一个函数,它分别复制每个通道到多个单通道图像。
定义:
void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );
作用:
cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果源图像少于4个通道的情况下,那么传递给cvSplit()的不必要的目标参数可设置为NULL。

使用时注意,源图像const CvArr* src应为多通道图像;目标图像CvArr* dst0, CvArr* dst1, CvArr* dst2,和CvArr* dst3应为单通道图像,以上图像的size应该一样大。

18.2cvMerge()

作用是将单通道图像变成多通道的,相当于cvSplit()的逆运算
void cvMerge(
const CvArr* src0,//图1
const CvArr* src1,//图2
const CvArr* src2,//图3
const CvArr* src3,//图4
CvArr* dst//结果图
);

程序实例:

#include <cv.h>#include <highgui.h>#include <stdio.h>int main(int argc, char** argv){    IplImage *src1,*src2,*dst11,*dst12,*dst13;    src1=cvLoadImage("1.jpg");    src2=cvLoadImage("1.jpg");    dst11 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);    dst12 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);    dst13 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);    cvSplit(src1, dst11, dst12, dst13, 0);//分解    cvMerge(dst11,dst12,dst13,NULL,src2);//再和并    cvShowImage( "测试1", dst11);    cvShowImage( "测试2", dst12);    cvShowImage( "测试3", dst13);    cvShowImage( "测试", src2);    cvWaitKey();    return 0;}
0 0
原创粉丝点击