weixin_56337147 2023-03-12 15:31 采纳率: 29.4%
浏览 23
已结题

C++,OpenCV,如何将vector容器中的cv::Mat类型的矩阵,保存到本地文件?

C++,OpenCV,如何将vector容器中的一系列cv::Mat类型的3*3矩阵,保存到本地文件?
然后怎么把这些数据从文件读取到vector容器中?

  • 写回答

3条回答 默认 最新

  • 嗷呜大嘴狼 2023-03-12 16:13
    关注

    将vector容器中的一系列cv::Mat类型的3*3矩阵保存到本地文件,可以使用OpenCV自带的文件存储类cv::FileStorage,具体步骤如下:

    保存到文件:

    #include <opencv2/opencv.hpp>
    #include <vector>
    
    int main() {
        std::vector<cv::Mat> mats_vec;  // 保存cv::Mat类型的vector容器
        // ... 在vector容器中添加cv::Mat类型的3*3矩阵 ...
    
        cv::FileStorage fs("mats.yml", cv::FileStorage::WRITE); // 打开文件存储类
        fs << "mats" << "[";  // 写入节点名
    
        for (const auto& mat : mats_vec) {  // 遍历vector容器
            fs << "{";
            fs << "mat" << mat;  // 将cv::Mat类型的3*3矩阵写入文件
            fs << "}";
        }
    
        fs << "]";  // 写入结束节点
        fs.release();  // 释放文件存储类资源
    
        return 0;
    }
    
    
    

    上述代码将vector容器中的每个cv::Mat类型的3*3矩阵写入到了名为"mats.yml"的文件中,节点名为"mats"。

    从文件读取到vector容器中:

    #include <opencv2/opencv.hpp>
    #include <vector>
    
    int main() {
        std::vector<cv::Mat> mats_vec;  // 保存cv::Mat类型的vector容器
    
        cv::FileStorage fs("mats.yml", cv::FileStorage::READ);  // 打开文件存储类
        cv::FileNode node = fs["mats"];  // 获取节点名为"mats"的节点
        if (node.type() != cv::FileNode::SEQ) {  // 判断节点类型是否为序列
            std::cerr << "ERROR: Mats node is not a sequence!\n";
            return 1;
        }
    
        for (const auto& mat_node : node) {  // 遍历节点序列
            cv::Mat mat;
            mat_node["mat"] >> mat;  // 从节点中读取cv::Mat类型的3*3矩阵
            mats_vec.push_back(mat);  // 将读取到的矩阵添加到vector容器中
        }
    
        fs.release();  // 释放文件存储类资源
    
        // ... 使用mats_vec容器中的数据 ...
    
        return 0;
    }
    
    
    

    上述代码从名为"mats.yml"的文件中读取了名为"mats"的节点,然后遍历节点序列,从每个节点中读取cv::Mat类型的3*3矩阵,最后将读取到的矩阵添加到vector容器中。

    答案来自 https://www.wodianping.com/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 修改了问题 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法