文章目录

  • 一、Mat类的类型CV_8UC1
    • 1.CV_8UC1
      • (1)格式
      • (2)意思
        • ①深度的位数
        • ②符号类型
        • ③`C`
        • ④cn通道数
      • (3)深度类型depth()
      • (4)常用的
      • (5)映射图像
    • 2.CV_8U
      • (1)用处1:只指定深度类型
      • (2)等同于CV_XXC1

一、Mat类的类型CV_8UC1

1.CV_8UC1

用处:指定深度和通道数

(1)格式

CV_<depth深度><符号类型>C<cn通道数>

(2)意思

①深度的位数

取值是8163264
这个就是存储的二进制位数

②符号类型

只有三个值:SUF

  • S:signed int 有符号整形
  • U:unsigned int 无符号整形
  • F:float 单精度浮点型

C

表示通道,写出来只是为了分割前后两个数字,以免混淆。

④cn通道数

取值可以是1234

  • 1:单通道图像,即灰度图片
  • 2:2通道图像,傅里叶变化会用到
  • 3:3通道图像,即RGB彩色图像
  • 4:4通道图像,即带Alph通道的RGB图像。
    PNG图像是一种典型的4通道图像。alpha通道可以赋值0到1,或者0到255,表示透明到不透明。

(3)深度类型depth()

#define CV_8U   0
#define CV_8S   1
#define CV_16U  2
#define CV_16S  3
#define CV_32S  4
#define CV_32F  5
#define CV_64F  6
#define CV_USRTYPE1 7

可以用函数int Mat::depth()获得。

Mat A(3,4,CV_8UC3);
cout << A.depth() << endl;
// 0Mat B(3,4,CV_32FC1);
cout << B.depth() << endl;
// 5

深度类型对应单位

深度类型 单位
CV_8U unsigned charucharuint8_t
CV_8S charint8_t
CV_16U ushort
CV_16S short
CV_32S int
CV_32F float
CV_64F double

(4)常用的

  • CV_8UC1:深度8位的无符号整型(U),通道数为1
  • CV_8UC3:深度8位的无符号整型(U),通道数为3
  • CV_32FC1:深度32位的单精度浮点型(F),通道数为1
  • CV_32FC3:深度32位的单精度浮点型(F),通道数为3

(5)映射图像

imshow()函数在显示图像时,会将各种类型的数据都映射到[0, 255]。不能显示2通道的图像,1,3,4都可以
如果载入的图像是:

  • CV_8U - 8-bit unsigned integers ( 0…255 ), [ 0 , 2 8 ] = [ 0 , 255 ] [0,2^8]=[0,255] [0,28]=[0,255],即就显示图像本来的样子。
  • CV_8S - 8-bit signed integers ( -128…127 )
  • CV_16U - 16-bit unsigned integers ( 0…65535 ), [ 0 , 2 1 6 ] = [ 0 , 255 × 256 ] [0,2^16]=[0,255\times 256] [0,216]=[0,255×256],则便用像素值除以256。
  • CV_16S - 16-bit signed integers ( -32768…32767 )
  • CV_32S - 32-bit signed integers ( -2147483648…2147483647 )
  • CV_32F - 32-bit floating-point numbers ( -FLT_MAX…FLT_MAX, INF, NAN ), [ 0 , 1.0 ] [0,1.0] [0,1.0],则像素值便要乘以255
  • CV_64F - 64-bit floating-point numbers ( -DBL_MAX…DBL_MAX, INF, NAN )

2.CV_8U

(1)用处1:只指定深度类型

有的地方只需要深度类型,比如卡尔曼滤波KalmanFiltervoid init(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F);

(2)等同于CV_XXC1

Mat中type函数输出的值:

  • 单通道时,就是对应相关depth()
  • 2个通道时,则相关depth()再加上8;
  • 3个通道时,则相关depth()再加上16;
  • 4个通道时,则相关depth()再加上24。

所以CV_8U等同于CV_8UC1

// 单通道
Mat A(2, 1, CV_8U);
cout << A.type() << endl;
// 0// 双通道
Mat B(2, 1, CV_8UC2);
cout << B.type() << endl;
// 8

Reference:
学习OpenCV2——Mat之通道的理解


OpenCV3之Mat类的类型type和深度depth相关推荐

  1. 【OpenCV3】cv::Mat类成员函数详解

    cv::Mat为OpenCV2和OpenCV3中最重要的类,可以毫不夸张得说,掌握了cv::Mat的操作,就掌握了OpenCV大半,这里将详细的介绍下cv::Mat类的成员函数及其使用. 1.clon ...

  2. python的opencv的图像对象存储的颜色通道_OpenCV大型阵列类型Mat类

    一.Mat类 Mat类是C++实现的OpenCV库的核心,表示一个N维度单通或多通道阵列,可以用来存储实数或复数值向量和数组,灰度或彩色图像,向量场,张量及直方图(当然高纬度的直方图存储在稀疏Mat类 ...

  3. OpenCV 之 Mat 类

    数字图像可看作一个数值矩阵, 其中的每个元素代表一个像素点,如下图所示: OpenCV 中,用 Mat 来表示该数值矩阵,它是很关键的一种数据结构,因为 OpenCV 中的大部分函数都和 Mat 有关 ...

  4. 【从零学习OpenCV 4】Mat类构造与赋值

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门 ...

  5. java OpenCv Mat 类的基本操作(3)

    对初学者来说,我们总是希望通过Opencv实现一些功能,当我们去研究一个陌生的东西,我们总是想着利用他去实现某一个功能 比如Opencv,我们很容易利用他去进行人脸识别,人脸识别也有很多的方式比如利用 ...

  6. OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)

    文章目录 1.基础图像容器 Mat 1.1Mat 结构的使用 1.2像素值的存储方法 1.3 显示创建 Mat 对象的七种方法 1.3.1 Mat 的常用构造函数 1.4 OpenCV 中的格式化输出 ...

  7. opencv Mat类

    本博客转载于这里! Mat 基础 图片在计算机中的本质就是一个数组.其中 Mat 就是在 OpenCV 中图像的表示形式,因此简单介绍 Mat 中一些常用的基础知识. 其中 Mat 类中有一些基本属性 ...

  8. 如何将OpenCV中的Mat类绑定为OpenGL中的纹理

    https://blog.csdn.net/TTTTzTTTT/article/details/53456324 如果要调用外接的USB摄像头获取图像通常使用OpenCV来调用,如何调用摄像头请参考本 ...

  9. OpenCV参考手册之Mat类详解1

    Mat类 OpenCV c + + n 维稠密数组类 class CV_EXPORTS Mat { public: / / - -很多的方法... ... /*!包括几位字段: -神奇的签名 -连续性 ...

最新文章

  1. Struts2与Webwork2的区别
  2. dfs-Rank the Languages
  3. 关于打印机共享的注意事项——又被叫去修电脑了
  4. c获取当前系统时间_Python系统:程序和进程
  5. 考前自学系列·计算机组成原理·查询方式/中断方式/DMA方式的适用范围及判断
  6. 7.4.7 2DPCA
  7. CRM_OPPORT_TEXT_DETER_STANDARD
  8. 和谐社区,和谐技术:微软的宠儿们,为什么富人的孩子就不能早当家?
  9. 基于Microsoft Translator API的vim翻译插件
  10. 盈不足术与老鼠打洞问题的近似解
  11. C# 将MDI窗口嵌入普通窗口
  12. 计量经济学第6章计算机c4,伍德里奇计量经济学第6章部分计算机习题详解STATA.pdf...
  13. Qt Creator 安装 VLD
  14. ACM比赛代码文件读写调试方案
  15. 架构设计:网络附属存储NAS,块存储EBS与对象存储OSS的比较以及选用
  16. 笔记本电脑外接显示器
  17. 基于 Vue 实现 Excel 的解析与导出
  18. 通过爬虫获取银行名称
  19. linux pppd ip up 脚本,Linux下pppd拨号脚本配置(转载)
  20. 什么是ddos攻击,怎么防御ddos攻击?

热门文章

  1. electron-forge
  2. Tensorflow之Mnist入门
  3. Android修改原生RatingBar的颜色
  4. 产品经理业务流程图的绘制流程
  5. TFIDF分词过滤,提取关键词
  6. Unity3D 实现简单的Buff系统
  7. 企鹅号是什么,微信视频号和微视的区别
  8. 终于跑完了马拉松半程了
  9. 在苹果Mac如何查看或取消订阅服务?
  10. 拓嘉启远:拼多多开店不交保证金,店铺能做好吗