http://lib.csdn.net/article/opencv/33264

http://blog.csdn.net/laohu_tiger/article/details/17359777

http://blog.csdn.net/qq_29540745/article/details/52487832

  • 图像通道

1.一个图像的通道数是N,就表明每个像素点处有N个数,一个a×b的N通道图像,本质上是三维数组,N表示第三个维度的个数,其图像矩阵实际上是N行a*b的数字矩阵。

OpenCV中图像的通道可以是1、2、3和4。其中常见的是1通道和3通道,2通道和4通道不常见。

1通道的是灰度图。

3通道的是彩色图像,比如RGB图像。

4通道的图像是RGBA,是RGB加上一个A通道,也叫alpha通道,表示透明度。PNG图像(便携式网络图形(Portable Network Graphics))是一种典型的4通道图像。alpha通道可以赋值0到1,或者0到255,表示透明到不透明,但是一般直接imshow()是看不出什么效果来的

2通道的图像是RGB555和RGB565。2通道图在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。RGB555是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节是G,第二字节后5位是B,可见对原图像进行压缩了。

2.OpenCV中用imshow( )来显示图像,只要Mat的数据矩阵符合图像的要求,就可以用imshow来显示,超过了4通道,就不是图像了,imshow( )也显示不了。

3.imshow( )显示单通道图像时一定是灰度图,如果我们想显示红色的R分量,还是应该按三通道图像显示,只不过G和B通道要赋值成0或255.

4.通道分解用split( ),通道合成用merg( ),这俩函数都是mixchannel( )的特例

注意:其实任何一张彩图都是4通道图像,只是读不读的问题。

  •  Scalar

在C++和opencv编程的时候,自建一个图片矩阵的时候,会用到Scalar函数和CV_8UC1等数据类型,用法如下:

Scalar表示为图像的通道赋值,CV_8UC1表示8位无符号数1通道,CV_8UC3表示8位无符号数3通道,CV_8UC4表示8位无符号数4通道。通道数也就是声明数组‘大小’,是1维还是3维,CV_8UC2不常用

Scalar(x),一般用于灰度图像,数据格式为:CV_8UC1或者是CV_8U,但是如果将数据格式变成CV_8UC3,则一个参数的情况下默认为B分量,后面的GR默认为0

Scalar(x,y),数据格式为CV_8UC1时,忽略后面的y,数据格式变成CV_8UC3,默认为BG分量,后面的R默认为0

Scalar(x,y,z),一般用于彩色图像的显示

Scalar(x,y,z,m),一般用于带透明通道的图像显示

结论:CV_8UCn和Scalar中的参数个数m的关系,如果n>m,那么后面的通道值默认为0,如果n<m,那么只取calar中的参数中的前n个。

Mat Img_tmp(600, 500, CV_8UC4, Scalar(255,255,255,0));

表示自建一个大小为600*500的四通道白色不透明的图片

  • split( )

C++: void split(const Mat& mtx, Mat* mv)
C++: void split(const Mat& mtx, vector<Mat>& mv)

参数:mtx   输入矩阵

mv    输出矩阵或矩阵数组

  • merge( )

C++: void merge(const Mat* mv, size_t count, OutputArray dst)
C++: void merge(const vector<Mat>& mv, OutputArray dst)

参数:mv    输入矩阵

count   当mv是C形式的array时,count表示输入矩阵个数

dst   输出矩阵

图像通道、Scalar、分离、合成通道的更多相关文章

  1. opencv 3 core组件进阶(2 ROI区域图像叠加&图像混合;分离颜色通道、多通道图像混合;图像对比度,亮度值调整)

    ROI区域图像叠加&图像混合 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp&g ...

  2. opencv3.2.0 分离颜色通道&多通道图像混合

    ##名称:分离颜色通道&多通道图像混合 ##平台:QT5.7.1+OpenCV3.2.0 ##时间:2017年12月11日 /***************创建QT控制台程序********* ...

  3. python实现图像加载与保存,窗口创建与销毁,图片常用属性,ROI,通道的分离与合并,对比度和亮度

    目录: (一)图像加载与保存 (二)图像显示窗口创建与销毁 (三)图片的常用属性的获取 (四)生成指定大小的矩形区域(ROI) (五)图片颜色通道的分离与合并 (六)两张图片相加,改变对比度和亮度 ( ...

  4. Opencv中RGB通道/HSV通道并分离

    OpenCV中HSV颜色模型及颜色分量范围 opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL) [opencv]在hsv颜色空间识别区域颜色 将原图分离 ...

  5. 学习 opencv---(4) 分离颜色通道 && 多通道混合

    上篇文章中我们讲到了使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作. 而为了更好地观察一些图像材料的特征,有时需要对R ...

  6. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  7. OpenCV 学习笔记(8)彩色图像RGB通道的分离、合并与显示

    https://blog.csdn.net/ZYTTAE/article/details/42234989 由于算法的需要,需要把彩色图像的R.G.B值分离出来,OpenCV中正好有split() 和 ...

  8. 通道的分离与合并,ROI,

    通道的分离与合并 class Program { static void Main(String[] args) { Mat img = CvInvoke.Imread(@"C:\Users ...

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

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

随机推荐

  1. C++开发系列-内联函数

    内联函数 C++使用内联函数来替代宏代码片段. #include <iostream> int main(){ printfA(); return 0; } inline void pri ...

  2. springboot整合shiro的使用

    shiro的原理已经有博客了,自己写可以问度娘 参考https://www.cnblogs.com/liyinfeng/p/8033869.html 此处直接描述实际使用 一.pom.xml引包 &l ...

  3. Hystrix容错处理

    如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直接提供者响应或超时.在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃.这时,就需要进行容 ...

  4. pixi.js 学习

     事件(event):PIXI库在精灵和舞台上提供了事件,用于交互. stage.click = function(data){ var event = data.originalEvent } sp ...

  5. React中的Ajax

    React中的Ajax 组件的数据来源,通常是通过Ajax请求从服务器获取,可以使用componentDidMount方法设置Ajax请求,等到请求成功,再用this.setState方法重新渲染UI ...

  6. CSS或HTML如何实现文字下面加点?

    就像word里文字加着重号一样,在字的下面加一个点,用CSS怎么做?注意,我说的是下面加点,不是文字加粗或倾斜,请不要回答<strong>或<em>之类的. 把要着重加点的文字 ...

  7. Ajax4Jsf 简单介绍

    Ajax4jsf 允许开发人员将 Ajax 功能添加到 JSF 应用程序中,而不需要 JavaScript 或用 Ajax 图形部件替换现有的组件.这个包还允许在使用 Java 2D 库时动态地生成图 ...

  8. 用JS写的一个简单的时钟

    没什么技术含量,单纯的想传上去.手痒了 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  9. SPSS应用之非参数检验

    SPSS应用之非参数检验 统计学的假设检验可以分为参数检验和非参数检验,参数检验是根据一些假设条件推算而来,当这些假设条件无法满足的时候,参数检验的效能会大打折扣,甚至出现错误的结果,而非参数检验通常 ...

  10. java日志管理 - slf4j+log4j2

    1 . 概述 1.1  日志框架实现 log4j是apache实现的一个开源日志组件: logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j ...