• 极简opencv操作xml文件


    目标

    修改xml文件,先产生一个临时文件,拷贝,修改,改名,使用opencv 非常简单地就可以搞定配置xml文件

    code

    #include 
    #include 
    #include  // 需要包含此头文件以使用cv::utils::fs::copy_file
    
    using namespace cv;
    using namespace std;
    
    int main() {
        // 创建FileStorage对象用于读操作
        FileStorage fs_read("example.xml", FileStorage::READ);
    
        if (!fs_read.isOpened()) {
            cout << "无法打开文件!" << endl;
            return -1;
        }
    
        // 读取并存储所有数据到内存中
        FileStorage fs_temp("temp.xml", FileStorage::WRITE); // 创建一个临时文件来保存修改后的数据
        fs_read.copyTo(fs_temp); // 复制原始文件内容到临时文件
        fs_temp.release(); // 释放临时文件的写入对象
        fs_read.release(); // 释放原文件的读取对象
    
        // 打开临时文件进行修改
        fs_temp.open("temp.xml", FileStorage::UPDATE);
        if (!fs_temp.isOpened()) {
            cout << "无法打开临时文件进行修改!" << endl;
            return -1;
        }
    
        // 修改特定数据项,例如增加frameCount
        int frameCount;
        fs_temp["frameCount"] >> frameCount;
        fs_temp << "frameCount" << (frameCount + 10); // 假设我们要将frameCount增加10
    
        fs_temp.release(); // 关闭临时文件
    
        // 替换原文件
        if (cv::utils::fs::exists("example.xml")) {
            cv::utils::fs::remove("example.xml"); // 删除原文件
        }
        cv::utils::fs::copy_file("temp.xml", "example.xml"); // 将临时文件复制回原文件名
        cv::utils::fs::remove("temp.xml"); // 删除临时文件
    
        cout << "frameCount已更新并保存至原文件example.xml" << endl;
    
        return 0;
    }
    
  • 相关阅读:
    chrome插件开发入门-保姆级攻略
    Spring中Bean的实例化详细流程
    数据分析的流程是啥样?
    Java笔记(十四)
    NET知识梳理—— AOP
    机械设计师应该在工作中培养哪些良好习惯?
    Chapter7: SpringBoot与数据访问
    对角矩阵的压缩存储
    面向对象知识总结
    深入理解Kafka核心设计及原理(三):消费者
  • 原文地址:https://blog.csdn.net/qianbo042311/article/details/139640568