专栏简介 | ||
💒个人主页 📰专栏目录 点击上方查看更多内容 | 📖心灵鸡汤📖 我们唯一拥有的就是今天,唯一能把握的也是今天 建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 | 🧭文章导航🧭 ⬆️ 8.Mat之多维元组(Tuple) ⬇️ 10.特殊的Mat类汇总(二) |
特殊的Mat类汇总
- 特殊的Mat类汇总
- 一、MatOfByte
- 1.构造函数
- 2.方法介绍
- 1.alloc
- 2.fromArray
- 3.fromList
- 4.toArray
- 5.toList
- 二、MatOfDouble
- 1.构造函数
- 2.方法介绍
- 三、MatOfFloat
- 1.构造函数
- 2.方法介绍
- 四、MatOfFloat4
- 1.构造函数
- 2.方法介绍
- 五、MatOfFloat6
- 1.构造函数
- 2.方法介绍
- 六、MatOfInt
- 1.构造函数
- 2.方法介绍
- 七、MatOfInt4
- 1.构造函数
- 2.方法介绍
📢 提前对特殊的Mat类(嵌套类)进行说明,后面遇到的时候就不再单独去说了。
特殊的Mat类汇总
本节中列举的所有类的作用都可以用于读取和写入图像的不同类型的数据。
一、MatOfByte
一个特殊的Mat类,用于存储图像的字节(byte)数据
1.构造函数
- 创建一个MatOfByte对象,并初始化其数据。
MatOfByte(int offset, int length, byte... a) | |
参数: | |
offset | 表示从数组a的哪个位置开始拷贝数据 |
length | 拷贝的数据长度 |
a | 要拷贝的字节数组 |
byte data[]={1,2,3,4,5,6};
//从data数组的第3个位置开始拷贝,拷贝3个
MatOfByte matOfByte= new MatOfByte(2,3,data);
System.out.println("matOfByte.dump() :\n" + matOfByte.dump());
2.将给定的Mat对象转换为MatOfByte对象
MatOfByte(Mat m) | |
参数: | |
m | mat对象 |
源码:
public MatOfByte(Mat m) {
super(m, Range.all());
if( !empty() && checkVector(_channels, _depth) < 0 )
throw new IllegalArgumentException("Incompatible Mat");
//FIXME: do we need release() here?
}
示例:
Mat mat = new Mat(1,3, CvType.CV_8UC1);
mat.put(0,0,1,2,3);
//将mat转换为MatOfByte对象
MatOfByte matOfByte= new MatOfByte(mat);
System.out.println("matOfByte.dump() :\n" + matOfByte.dump());
2.方法介绍
1.alloc
这个方法的作用是为MatOfByte对象分配足够的内存空间来存储指定数量的元素。这个方法可以用于在创建MatOfByte对象之后,为其分配所需的内存空间。
例如,如果你知道你将要存储100个字节数据,你可以调用alloc(100)来为MatOfByte对象分配足够的内存空间,以便能够存储这100个字节。这样,你就可以在MatOfByte对象中存储字节数据了
2.fromArray
将给定的字节数组转化为MatOfByte对象
1.
fromArray(byte... a) | |
参数: | |
a | 字节数据 |
fromArray(int offset, int length, byte... a) | |
参数: | |
offset | 表示从数组a的哪个位置开始拷贝数据 |
length | 拷贝的数据长度 |
a | 要拷贝的字节数组 |
3.fromList
用于将 List 类型的数据转换为 MatOfByte 对象。
//创建一个空的matOfByte
MatOfByte matOfByte= new MatOfByte();
//创建bl集合
List bl =new ArrayList<>();
bl.add((byte) 1);
bl.add((byte) 2);
bl.add((byte) 3);
matOfByte.fromList(bl);
System.out.println("matOfByte.dump() :\n " + matOfByte.dump());
4.toArray
将MatOfByte对象转换为byte数组
5.toList
将MatOfByte对象转换为byte集合
二、MatOfDouble
通过使用MatOfDouble类,可以方便地进行双精度浮点数类型的矩阵数据的处理和操作
1.构造函数
这里只列举其中一个构造函数。
MatOfDouble(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为CV_64FC1,且需要1行或1列 |
Mat mat = new Mat(1,3, CvType.CV_64FC1);
mat.put(0,0,1,2,3);
System.out.println("mat.dump() :\n " + mat.dump());
MatOfDouble matOfDouble = new MatOfDouble(mat);
System.out.println("matOfDouble.dump() :\n " + matOfDouble.dump());
2.方法介绍
参考MatOfByte-方法介绍
三、MatOfFloat
MatOfFloat类的主要作用是提供了一种方便的方式来表示和操作浮点数类型的矩阵数据
1.构造函数
这里只列举其中一个构造函数。
MatOfFloat(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为 CV_32FC1,且需要1行或1列 |
Mat mat=new Mat(1,3, CvType.CV_32FC1);
mat.put(0,0,1,2,3);
MatOfFloat matOfFloat=new MatOfFloat(mat);
System.out.println("matOfFloat.dump() :\n " + matOfFloat.dump());
2.方法介绍
参考MatOfByte-方法介绍
四、MatOfFloat4
MatOfFloat4类可以用来存储4个浮点数的矩阵
1.构造函数
这里只列举其中一个构造函数。
MatOfFloat4(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为 CV_32FC4,且需要1行或1列 |
Mat mat=new Mat(1,3, CvType.CV_32FC4);
MatOfFloat4 matOfFloat=new MatOfFloat4(mat);
System.out.println("matOfFloat4.dump() :\n " + matOfFloat.dump());
2.方法介绍
参考MatOfByte-方法介绍
五、MatOfFloat6
MatOfFloat6类可以用来存储6个浮点数的矩阵
1.构造函数
这里只列举其中一个构造函数。
MatOfFloat6(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为 CV_32FC(6),且需要1行或1列 |
Mat mat=new Mat(3,1, CvType.CV_32FC(6));
MatOfFloat6 matOfFloat=new MatOfFloat6(mat);
System.out.println("matOfFloat6.dump() :\n " + matOfFloat.dump());
2.方法介绍
参考MatOfByte-方法介绍
六、MatOfInt
MatOfInt类是用来表示一个整数类型的矩阵
1.构造函数
这里只列举其中一个构造函数。
MatOfInt(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为 CV_32SC1,且需要1行或1列 |
Mat mat=new Mat(1,3, CvType.CV_32SC1);
MatOfInt matOfInt=new MatOfInt(mat);
System.out.println("matOfInt.dump() :\n " + matOfInt.dump());
2.方法介绍
参考MatOfByte-方法介绍
七、MatOfInt4
MatOfInt4用来存储和操作四个整数类型的矩阵
1.构造函数
这里只列举其中一个构造函数。
MatOfInt4(Mat m) | |
参数: | |
m | mat对象-mat数据类型需为 CV_32SC4,且需要1行或1列 |
Mat mat=new Mat(3,1, CvType.CV_32SC4);
MatOfInt4 matOfInt=new MatOfInt4(mat);
System.out.println("matOfInt4.dump() :\n " + matOfInt.dump());
2.方法介绍
参考MatOfByte-方法介绍