合并与分割通道

程序如下

  1. #include "opencv2/opencv.hpp"
  2. using namespace cv;
  3. int main()
  4. {
  5. Mat original = imread("girl.jpg",CV_LOAD_IMAGE_COLOR);
  6. Mat splitChannels[3]; // 声明Mat数组,共3个元素,存放分离后的通道
  7. split(original, splitChannels); // 分离original
  8. // 分别显示B,G,R,
  9. imshow("B", splitChannels[0]);
  10. imshow("G", splitChannels[1]);
  11. imshow("R", splitChannels[2]);
  12. waitKey();
  13. // 把 R 通道像素值全部清零,那么这个通道就显示为黑色
  14. splitChannels[2] = Mat::zeros(splitChannels[2].size(), CV_8UC1);
  15. Mat output;
  16. // 把3个通道合并,保存到output中, 然后显示
  17. merge(splitChannels, 3, output);
  18. imshow("Merged", output);
  19. waitKey();
  20. return 0;
  21. }

运行结果如下:



最后的图片就是合并通道后的图片, R 通道全部置零,和上篇博客中最后一幅图效果是一样的。

1. split函数,分离通道

函数原型:

  1. void split(const Mat& src, vector<Mat>& dst);

参数说明:

  1. src: 原始彩色图像,这里就是original
  2. dst: 分离后3通道图像保存的Mat数组,这里选择只有3个元素的 splitChannels

2. Mat.zeros 成员函数,生产一个所有元素为零的矩阵

函数原型:

  1. static MatExpr cv::Mat::zeros(Size size, int type);

参数说明:

  1. size: 生成的Mat的尺寸
  2. type:生产的Mat的类型,这里用CV_8UC1,表示8bit,uchar,1 个通道。
  1. splitChannels[2] = Mat::zeros(splitChannels[2].size(), CV_8UC1);

这条语句是把分割后的通道splitChannels[2]全部置零。

3. merge函数,合并通道

函数原型:

  1. void cv::merge(const Mat* mv, size_t count, OutputArray dst);

参数说明:

  1. mv: 待合并的通道
  2. count: 合并通道数
  3. dst: 输出的Mat变量

opencv3 学习五 - 合并与分割通道的更多相关文章

  1. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  2. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

  3. TweenMax动画库学习(五)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  4. Java基于opencv实现图像数字识别(五)—投影法分割字符

    Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...

  5. SVG 学习<五> SVG动画

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  6. Android JNI学习(五)——Demo演示

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  7. OpenCV3学习笔记

    http://blog.csdn.net/u010429424/article/details/73691001 http://blog.csdn.net/zhaoxfxy/article/detai ...

  8. Halcon学习之三:有关图像通道的函数(R是三通道,B是1通道,G二通道),排列顺序BGR

    黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像.下面这些是与图像通道有关的函数: ...

  9. Halcon学习之三:有关图像通道的函数

    黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像.下面这些是与图像通道有关的函数: ...

随机推荐

  1. devexpress 中 XtraTabcontrol 改变BackColor 的方法

    装载自CSDN,原文地址  https://blog.csdn.net/zjzytnn/article/details/53699340 今天在实现CAD文件的读和显示操作的时候,需要将CAD文件显示 ...

  2. LearnHowToThink

    一.BubbleSort and XListview 1.BubbleSort (1)analysis traverse.compare.exchange.cycle.optimize strateg ...

  3. February 15 2017 Week 7 Wednesday

    Youth is not a time of life, it is a state of mind. 青春不是一段年华,而是一种心境. Likewise, maturity is not a tim ...

  4. UML用例图间关系说明

    用例间一般存在如下四种关系: 1."通信"关系(<<cmmunicate>>构造型): "通信"关系:使用实心的关联线或带<< ...

  5. Dispatch groups 与任务同步

    https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingG ...

  6. Linux 查看所有登录用户的操作历史

    在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据.这时 ...

  7. 【[ZJOI2006]物流运输】

    一直不会做,觉得这是一道神题 于是万般无奈下去借鉴抄了一下题解 发现这就是一道套路题 我们用\(dp[i]\)表示前\(i\)天的最小总花费,于是我们就可以用一个常规的老套路来做了 那就是枚举断点 我 ...

  8. 我的第一个C++程序

    准备抽空学习C++了,不知道自己以后能不能坚持下去,去百度查了一下入门,大多数朋友都是选择用VC++或者VS,而我这里用的是C-Free 5 ,安装包也只有十几兆. 用起来也方便.对于初学者而言够用了 ...

  9. New Language Features in C# 6

    Source:https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6 This document describes ...

  10. MATLAB等距扇形反投影分析

    MATLAB等距扇形反投影分析 摘要:MATLAB phantom函数产生的Shepp-Logan模型,可以用来验证二维图像重建算法的数值精确度,本文首先据此模型,结合正弦图,讨论平行投影时的极坐标表 ...