Opencv Mat的三种常用类型简介
来源:互联网 发布:保温杯套子 淘宝 编辑:程序博客网 时间:2024/06/14 07:02
本文主要介绍Opencv常用的三种Mat
类型:Mat
,Mat_
,Matx
。
1. Mat
1.1 创建与初始化
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
注意:
使用
Mat::Mat(int rows, int cols, int type, const Scalar& s)
和Mat::Mat(Size size, int type, const Scalar& s)
函数进行Mat
初始化的时候,一定要注意Size
行列存放顺序是(col, row)
或者是(width, height)
;Mat
的type
种类非常多,可以创建普通的CV_8UC1, ... , CV_64FC4
1-4通道的矩阵,也可以创建更高通道的矩阵CV_8UC(n), ... , CV_64FC(n)
,其中最大可以达到CV_CN_MAX
通道,Opencv 2.4.11版本中#define CV_CN_MAX 512
;创建多通道
Mat
时,例如CV_8UC3
,使用cv::Scalar(0, 0,0)
或myMat.setTo(cv::Scalar(0))
,其中后者通用于任意通道;使用其他
Mat
拷贝初始化的时候,void Mat::copyTo(OutputArray m) const
函数会首先调用m.create(this->size(), this->type())
所以会对输入的m
进行重新创建(包括size
和type
),然后进行数据拷贝。m.copyTo(m)
也是允许的,没有任何问题。
1.2 数据访问
这里只列举出常用三种方法:
1.指针数组的方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
2..ptr
的方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
3..at
的方式
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
三种方法速度上有一定差异,感兴趣的可以自己测试一下~
2. Mat_
Mat_
继承于Mat
,相比于Mat
没有增加任何数据段,但增加了一些更加便捷的功能,表达上也更加精简。
2.1 创建与初始化
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
注意:
使用
( cv::Mat_<double>(row, col) << ...) )
形式创建并初始化的时候,最外面的( )
不能省略;使用第二种通过
Mat
指针或者引用的方式创建与初始化Mat_
时,两者的数据类型一定要一致,不然程序虽然编译没问题,但运行就会BUG~
2.2 数据访问
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
3. Matx
Matx
主要用于大小、数据类型(浮点型)已知的小矩阵(最大不超过6x6
),包括:Matx12f, ... , Matx66f
和Matx12d, ... , Matx66d
。
创建与初始化都很简单,不做过多介绍:
- 1
- 2
- 3
最后,关于Mat
的运算(加,减,乘,求逆,转置,均值,标准差…)三种类型基本差异不大,在文档中也容易找到~
参考文档:http://www.docs.opencv.org/modules/core/doc/basic_structures.html?highlight=mat
- Opencv Mat的三种常用类型简介
- Opencv Mat的三种常用类型简介
- Opencv Mat的三种常用类型简介
- Opencv中的Mat类型常用函数数据
- opencv Mat数据的三种标准访问方式
- opencv Mat数据的三种标准访问方式
- OpenCV中CvMat或Mat的类型
- opencv中的Mat类型的相关概念
- OpenCV Mat 简介
- 【opencv】2. Mat简介
- opencv中的Mat类型
- OPENCV Mat 类型
- 【OpenCv】Mat中常用的一些
- Mat类型遍历图像的三种方法
- opencv Mat常用操作
- OpenCV Mat常用操作
- openCV中Mat类型与IplImage类型的转换
- OpenCV Mat类型与IplImage类型的相互转换
- 多线程访问同一资源第三步 : 生产者和消费者模式 用synchronized
- 删除.gradle文件夹下的全部内容,打开Android Studio卡在Refreshing gradle project
- Oracle学习笔记day05——DML语言
- 第三方登录(微博)
- HDU 2017 多校联合训练赛8 1008 6140 Hybrid Crystals
- Opencv Mat的三种常用类型简介
- 百度之星资格赛1001度度熊保护村庄
- Excel提取员工名单,就这么快
- 僵尸进程如何产生的
- UVA 1329 Corporative Network
- HDU 3336 Count the string(深入理解KMP算法)【模板】
- 初三上学期待学习内容(实时更新)
- Android检查手机是否被root
- maven+mybatis+spring+springmvc整合