opencv cvSplit cvMerge
2015-07-16 19:39
363 查看
/* Splits a multi-channel array into the set of single-channel arrays or extracts particular [color] plane */ CVAPI(void) cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );
作用:将多通道图像分离为单通道图像
src:多通道源图像
dst0、dst1、dst2、dst3:单通道结果图像
源图像和结果图像的大小相同,深度类型相同,仅有通道类型不同
##############################################################
/* Merges a set of single-channel arrays into the single multi-channel array or inserts one particular [color] plane to the array */ CVAPI(void) cvMerge( const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst );
作用:将单通道图像合并为多通道图像
src0、src1、src2、src3:单通道源图像
dst:多通道结果图像
源图像和结果图像的大小相同,深度类型相同,仅有通道类型不同
###########################################################
程序:将图像lena.jpg分离为三个单通道图像c1、c2、c3,再将其合并为单通道图像(蓝、绿、红)
void splitAndMerge(void) { IplImage *img=cvLoadImage("lena.jpg"); IplImage *c1=cvCreateImage(cvGetSize(img), img->depth, 1); IplImage *c2=cvCreateImage(cvGetSize(img), img->depth, 1); IplImage *c3=cvCreateImage(cvGetSize(img), img->depth, 1); IplImage *rImg=cvCreateImage(cvGetSize(img), img->depth, 3); IplImage *gImg=cvCreateImage(cvGetSize(img), img->depth, 3); IplImage *bImg=cvCreateImage(cvGetSize(img), img->depth, 3); if (NULL == img || NULL == c1 || NULL == c2 || NULL == c3 || NULL == rImg || NULL == gImg || NULL == bImg) exit(0); cvSplit(img, c1, c2, c3, NULL); cvNamedWindow("img"); cvShowImage("img", img); cvZero(rImg); cvZero(gImg); cvZero(bImg); cvMerge(c1, NULL, NULL, NULL, bImg); cvMerge(NULL, c2, NULL, NULL, gImg); cvMerge(NULL, NULL, c3, NULL, rImg); cvNamedWindow("rImg"); cvNamedWindow("gImg"); cvNamedWindow("bImg"); cvShowImage("rImg", rImg); cvShowImage("gImg", gImg); cvShowImage("bImg", bImg); cvWaitKey(0); cvReleaseImage(&img); cvReleaseImage(&c1); cvReleaseImage(&c2); cvReleaseImage(&c3); cvReleaseImage(&rImg); cvReleaseImage(&gImg); cvReleaseImage(&bImg); cvDestroyAllWindows(); }
相关文章推荐
- Hadoop map任务个数分析
- linux常用指令(新手总结)
- Linux中的经典双链表的实现
- Centos6.4安装opennebula
- 配置 Docker 镜像下载的本地 mirror 服务
- Linux下编译并使用ZeroMQ
- Linux下的输入/输出重定向
- 【发布公告】您的应用卡么?Bugly全新功能:卡顿/ANR监控
- linux grep命令详解
- OpenCV使用标定图
- Hadoop获取split文件名
- Linux创建特殊设备文件
- linux 清除 命令
- SNMP监控一些常用OID的总结
- linux epoll 学习
- scrapy安装(Linux RedHat)
- OpenStack创建实例错误解决方法
- linux下Ctrl命令组合
- Linux的C函数open()、read()和write()使用说明
- 仿QQ群管理PopWindow