qt使用opencv追加mat文件
时间: 2023-12-31 08:07:11 浏览: 78
在Qt中使用OpenCV库,可以通过以下步骤将Mat文件追加到已有的文件中:
1. 打开已有文件:
```c++
QString filename = "path/to/your/file";
cv::FileStorage fs(filename.toStdString(), cv::FileStorage::READ);
```
2. 读取已有的Mat对象:
```c++
cv::Mat mat;
fs["mat"] >> mat;
```
3. 关闭文件:
```c++
fs.release();
```
4. 追加新的Mat对象:
```c++
cv::Mat new_mat = cv::imread("path/to/your/new/image");
fs.open(filename.toStdString(), cv::FileStorage::APPEND);
fs << "mat" << new_mat;
fs.release();
```
注意:在追加操作时,需要使用 `cv::FileStorage::APPEND` 模式打开文件,否则会覆盖原有的内容。另外,如果新的Mat对象与已有的Mat对象的通道数、深度、尺寸等不一致,则会导致写入失败。
相关问题
qt使用opencv将新数据追加到mat文件
你可以使用 OpenCV 的 FileStorage 类来将新数据追加到 mat 文件。下面是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 打开 mat 文件
FileStorage fs("data.mat", FileStorage::APPEND);
// 创建一个新的 Mat 对象
Mat new_data = Mat::ones(5, 5, CV_32F) * 10;
// 将新数据写入 mat 文件
fs << "new_data" << new_data;
// 关闭 mat 文件
fs.release();
return 0;
}
```
在这个示例中,我们打开了一个名为 "data.mat" 的 mat 文件,并使用 FileStorage::APPEND 模式打开它,以便我们可以将新数据追加到文件中。然后我们创建了一个 5x5 的 Mat 对象,并将其填充为 10。接下来,我们使用运算符 << 将新数据写入 mat 文件。最后,我们关闭了 mat 文件。
注意,如果 mat 文件不存在,FileStorage 会自动创建一个新文件来保存数据。
阅读全文