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