一、Mat数据类型

在以下两个场景中使用 OpenCV 时,我们必须事先知道矩阵元素的数据类型:

  • 使用 at 方法访问数据元素的时候要指明数据类型
  • 做数值运算的时候,比如究竟是整数除法还是浮点数除法。

cv::Mat 类的对象有一个成员函数 type() 用来返回矩阵元素的数据类型,返回值是 int 类型,不同的返回值代表不同的类型:

  C1 C2 C3 C4
CV_8U 0 8 16 24
CV_8S 1 9 17 25
CV_16U 2 10 18 26
CV_16S 3 11 19 27
CV_32S 4 12 20 28
CV_32F 5 13 21 29
CV_64F 6 14 22 30

C1, C2, C3, C4 指的是通道(Channel)数,比如灰度图像只有 1 个通道,是 C1;JPEG格式 的 RGB 彩色图像就是 3 个通道,是 C3;PNG 格式的彩色图像除了 RGB 3个通道外,还有一个透明度通道,所以是 C4。数值7 是用来给用户自定义:

 #define CV_USRTYPE1 7

在已知通道数和每个通道数据类型的情况下,指定给 at 方法的数据类型如下表所示:

  C1 C2 C3 C4
uchar uchar cv::Vec2b cv::Vec3b  
short short cv::Vec2s cv::Vec3s  
int int cv::Vec2i cv::Vec3i  
float float cv::Vec2f cv::Vec3f cv::Vec6f
double double cv::Vec2d cv::Vec3d cv::Vec6d

附:数据类型及取值范围:

数值 具体类型 取值范围
CV_8U 8 位无符号整数 (0…..255)
CV_8S 8 位符号整数 (-128…..127)
CV_16U 16 位无符号整数 (0……65535)
CV_16S 16 位符号整数 (-32768…..32767)
CV_32S 32 位符号整数 (-2147483648……2147483647)
CV_32F 32 位浮点数 (-FLT_MAX ………FLT_MAX,INF,NAN)
CV_64F 64 位浮点数 (-DBL_MAX ……….DBL_MAX,INF,NAN)

最新文章

  1. Lambert(朗伯)光照模型 和Half Lambert的区别
  2. nodejs Error: request entity too large解决方案
  3. 获取在线APP的素材图片
  4. 【UOJ #29】【IOI 2014】holiday
  5. VisualStudio.gitignore git 忽略
  6. 模仿QQ空间 网页设计
  7. 三、 将DataTable 转换为List
  8. Linux内核之内存管理(4)--缺页处理程序
  9. c常用字符串函数
  10. android EditText问题多行文本输入
  11. 初创互联网公司简明创业指南 - YC新掌门Sam Altman
  12. echarts将图表Y坐标刻度设置成只显示整数
  13. SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
  14. angular.js--demo2-----声明局部控制器controller
  15. python科学计算模块NumPy
  16. 多线程编程——java
  17. Python 优雅获取本机 IP 方法
  18. 【Linux】常见Linux默认的shell
  19. 编译、安装rdesktop 1.8.3
  20. linux云主机小技巧

热门文章

  1. liunx下安装eclipse
  2. 学习正则 - golang实现
  3. 字符串的数字部分递增,如user00000001后面的数字部分递增+1
  4. 第二百四十三节,Bootstrap模态框插件
  5. Django 最佳实践
  6. 复合文档(Compound Document)读写栗子
  7. Java中带包的类的编译与执行
  8. iOS - 导航栏UINavigationController经常使用属性
  9. 66、多种多样的App主界面Tab(1)------ ViewPager实现Tab
  10. 【BZOJ1367】[Baltic2004]sequence 左偏树