• 图像通道、Scalar、分离、合成通道


    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   输出矩阵

  • 相关阅读:
    numpy函数:[6]arange()详解
    python中的list和array的不同之处
    python 矩阵转置transpose
    PowerDesigner(一)-PowerDesigner概述(系统分析与建模)
    MDX中Filter 与Exist的区别
    SQL Server 2016 —— 聚集列存储索引的功能增强
    SQL Server 2016:内存列存储索引
    PXE
    setjmp
    skb head/data/tail/end/介绍
  • 原文地址:https://www.cnblogs.com/qinguoyi/p/7616517.html
Copyright © 2020-2023  润新知