openCV学习——一、Mat类

一、Mat数据类型

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

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

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

 C1C2C3C4
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 是用来给用户自定义:

1 #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)
原文地址:https://www.cnblogs.com/ivan-count/p/8899794.html