Mat 文件流读写
时间: 2023-08-03 21:08:41 浏览: 96
在 OpenCV 中,我们可以使用 `FileStorage` 类来读写 `Mat` 对象。`FileStorage` 类提供了一种方便的方式,可以将 `Mat` 对象保存到文件中,也可以从文件中读取 `Mat` 对象。下面介绍如何使用 `FileStorage` 类进行文件流读写。
## 写入 Mat 数据到文件
要将 `Mat` 对象写入文件,我们可以使用 `FileStorage` 类的 `write` 方法。例如,要将 `Mat` 对象写入 `test.yml` 文件,可以使用以下代码:
```c++
Mat img = imread("test.jpg");
FileStorage fs("test.yml", FileStorage::WRITE);
fs << "img" << img;
fs.release();
```
其中,`Mat` 对象 `img` 是要写入的数据,`FileStorage` 类的构造函数传入的第一个参数是文件名,第二个参数是文件打开模式,这里是 `FileStorage::WRITE` 表示写入模式。`<<` 运算符用于将数据写入文件。最后,需要调用 `release` 方法来关闭文件。
## 从文件中读取 Mat 数据
要从文件中读取 `Mat` 对象,我们可以使用 `FileStorage` 类的 `read` 方法。例如,要从 `test.yml` 文件中读取 `Mat` 对象,可以使用以下代码:
```c++
Mat img;
FileStorage fs("test.yml", FileStorage::READ);
fs["img"] >> img;
fs.release();
```
其中,`FileStorage` 类的构造函数传入的第一个参数是文件名,第二个参数是文件打开模式,这里是 `FileStorage::READ` 表示读取模式。`[]` 运算符用于获取数据,`>>` 运算符用于将数据读取到 `Mat` 对象中。最后,需要调用 `release` 方法来关闭文件。
注意,写入和读取 `Mat` 对象时,需要使用相同的变量名。在上面的例子中,我们使用了 `"img"` 作为变量名。如果写入和读取时使用了不同的变量名,将无法正确读取数据。
阅读全文