OpenCV3 通道和位深以及对应的Vec的理解含义整理

矩阵数据类型:

CV_<bit_depth>(S|U|F)C<number_of_channels>

bit_depth

比特数---代表8bite,16bites,32bites,64bites---举个例子吧--比如说,如

      如果你现在创建了一个存储--灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张

      灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位--所以它对

      应的就是CV_8

S|U|F CV_8U 8位无符号整数(0..255) unsigned char(uchar)

CV_8S 8位有符号整数(-128..127) char

CV_16U 16位无符号整数(0..65535) unsigned short(ushort)

CV_16S 16位有符号整数(-32768..32767) short

CV_32S 32位有符号整数(-2147483648..2147483647) int

CV_32F 32位浮点数(-FLT_MAX..FLT_MAX,INF,NAN) float

CV_64F 64位浮点数(-DBL_MAX..DBL_MAX,INF,NAN) double

注:INF 无穷大;NAN 未定义;

C<number_of_channels>

代表一张图片的通道数,比如:

         1--灰度图片--grayImg---是--单通道图像

         2--RGB彩色图像---------是--3通道图像

         3--带Alph通道的RGB图像--是--4通道图像

 

与Vec的对照关系(CV_8S没有对应的符号)

CV_8U(uchar)  
CV_8UC1 (uchar)  CV_8UC2 (Vec2b)  CV_8UC3 (Vec3b)  CV_8UC4(Vec4b) 

CV_8S(char)   
CV_8SC1 (1通道)  CV_8SC2 (2通道)   CV_8SC3 (3通道)  CV_8SC4 (4通道)   

CV_16U  (ushort)
CV_16UC1 (ushort)  CV_16UC2 (Vec2w)   CV_16UC3 (Vec3w)   CV_16UC4 (Vec4w)   

CV_16S  (short)
CV_16SC1(short)   CV_16SC2(Vec2s)   CV_16SC3(Vec3s)   CV_16SC4(Vec4s)   

CV_32S (int)
CV_32SC1(int)   CV_32SC2(Vec2i)    CV_32SC3(Vec3i)  CV_32SC4(Vec4i)   

CV_32F (float)
CV_32FC1(float)   CV_32FC2(Vec2f)  CV_32FC3(Vec3f)   CV_32FC4(Vec4f)  

CV_64F(double)  
CV_64FC1(double)   CV_64FC2(Vec2d)  CV_64FC3(Vec3d)  CV_64FC4(Vec4d) 

Vec类型的说明

uchar类型(分别为2元素,3元素,4元素):   8位
typedef Vec<uchar, 2> cv::Vec2b     
typedef Vec<uchar, 3> cv::Vec3b 
typedef Vec<uchar, 4> cv::Vec4b

char类型
Vec<char, 2> 
at<char>(y,x)       不过只能访问单通道的矩阵
ptr<char>(y)[x])    可以访问任何位置的矩阵点的值

short类型                            都是16位的形式,区别在于有没有符号
typedef Vec<short, 2> cv::Vec2s     
typedef Vec<short, 3> cv::Vec3s     
typedef Vec<short, 4> cv::Vec4s     
typedef Vec<ushort, 2> cv::Vec2w
typedef Vec<ushort, 3> cv::Vec3w
typedef Vec<ushort, 4> cv::Vec4w

int类型:                            都是32位     
typedef Vec<int, 2> cv::Vec2i       typedef Vec<int, 3> cv::Vec3i
typedef Vec<int, 4> cv::Vec4i       typedef Vec<int, 6> cv::Vec6i
typedef Vec<int, 8> cv::Vec8i

float类型:                          同样都是32位
typedef Vec<float, 2> cv::Vec2f    
typedef Vec<float, 3> cv::Vec3f 
typedef Vec<float, 4> cv::Vec4f     
typedef Vec<float, 6> cv::Vec6f


double类型:                         都是64位
typedef Vec<double, 2> cv::Vec2d        typedef Vec<double, 3> cv::Vec3d
typedef Vec<double, 4> cv::Vec4d        typedef Vec<double, 6> cv::Vec6d

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值