opencv- FileStorage数据的读取与保存

支持读写XML, YAML, JSON 格式文件,后缀名为.xml , .yml , .yaml , .json

保存数据

复制代码
    //cv::FileStorage(const string& source, int flags, const string& encoding=string());
    //创建方式一
    //cv::FileStorage fs("D:\\bb\\tt.yml", cv::FileStorage::WRITE);//创建FileStorage实例
    /*
    参数1:存储或读取数据的文件名(字符串)
    参数2:操作模式,包括:
            FileStorage::READ 打开文件进行读操作
            FileStorage::WRITE 打开文件进行写操作
            FileStorage::APPEND打开文件进行附加操作
            FileStorage::MEMORY 从source读数据,或向内部缓存写入数据(由FileStorage::release返回)
    参数3:encoding – 文件编码方式。目前不支持UTF-16 XML 编码,应使用 8-bit 编码

    */

    //创建方式二
    cv::FileStorage fs;
    fs.open("D:\\bb\\tt.yml", cv::FileStorage::WRITE);

    

    //保存数值
    int imageWidth = 5;
    int imageHeight = 10;
    fs << "imageWidth" << imageWidth;
    fs << "imageHeight" << imageHeight;

    //保存矩阵
    cv::Mat m1 = cv::Mat::eye(3, 3, CV_8U);
    fs << "m1" << m1;

    bool b = fs.isOpened(); //文件是否打开
    //ture – 如果对象关联了当前文件;false – 其他情况
    std::cerr << b << std::endl;

    fs.release();
复制代码

 

 

读取数据 

复制代码
    cv::FileStorage fs;
    fs.open("D:\\bb\\tt.yml", cv::FileStorage::READ);
    
    //读取普通数据
    int width;
    int height;
    fs["imageWidth"] >> width;//读取映射名为imageWidth的数据赋值给width
    fs["imageHeight"] >> height;
    std::cout << "width readed = " << width << std::endl;
    std::cout << "height readed = " << height << std::endl;

    //读取矩阵
    cv::Mat resultMatRead;
    fs["m1"] >> resultMatRead;//读取映射名为m1的矩阵赋值给resultMatRead  
    std::cerr << resultMatRead << std::endl;
    
    fs.release();
复制代码

 

  

 

 

 

 

 

 

posted @   天子骄龙  阅读(1773)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航