opencv学习(十四)XML//YAML的读取和写入(同理可用txt,doc替代)//涉及FileStorage()//读写符号//FileNodeIterator()得到节点

11人阅读 评论(0) 收藏 举报
分类:

xml,yaml介绍

这里写图片描述

如何使用

这里写图片描述
这里写图片描述

步骤一,FileStorage()打开(读/写前的准备,定义)

这里写图片描述

步骤二,读写操作函数(符号)

这里写图片描述
这里写图片描述

步骤三,vector/maps类型输入输出,FileNodeIterator读取字符串的得到节点

这里写图片描述

步骤四,关闭文件

这里写图片描述
这里写图片描述

实例,xml,yaml文件写入

#include<opencv2/opencv.hpp>
#include<time.h>
using namespace cv;

int main()
{
    //初始化
    FileStorage fs("test.yaml", FileStorage::WRITE);

    //开始文件写入
    fs << "frameCount" << 5;
    time_t rawtime; time(&rawtime);//此行何意???
    fs << "calibrationDate" << asctime(localtime(&rawtime));//此行何意???(读取时间量?)
     Mat cameraMatrix = (Mat_<double>(3, 3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
    Mat distCoeffs = (Mat_<double>(5, 1) << 0.1, 0.01, -0.001, 0, 0);//此行何意???
    fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;//读取Mat型cameraMatrix,distcoeffs的内容
    fs << "feature" << "[";
    for (int i = 0; i < 3; i++)
    {
        int x = rand() % 640;
        int y = rand() % 480;
        uchar ibp = rand() % 256;//%何意?

        fs << "{:" << "x" << x << "y" << y << "ibp" << "[:";
        for (int j = 0; j < 8; j++)
            fs << ((ibp >> j) & 1);
        fs << "]" << "}";
    }
    fs << "]";
    fs.release();
    printf("完毕,请在工程目录下查看文件-");
    getchar();

    return 0;
}

xml,yaml文件等读取

#include<opencv2/opencv.hpp>
#include<time.h>
using namespace cv;
using namespace std;

int main()
{
    //改变consolo字体颜色
    system("color 6F");

    //初始化
    FileStorage fs2("test.yaml", FileStorage::READ);

    //开始文件读取
    //法一,对FileNode操作
    int frameCount2 = (int)fs2["framecount2"];
    std::string date;//此行何意??(定义字符串 date)

                     //法二,使用FileNode运算符>>
    fs2["calibrationDate"] >> date;

    Mat cameraMatrix2, distCoeffs2;
    fs2["cameraMatrix"] >> cameraMatrix2;
    fs2["distCoeffs"] >> distCoeffs2;//读取

    cout << "frameCount2:" << frameCount2 << endl
        << "calibration date:" << date << endl
        << "camera matrix:" << cameraMatrix2 << endl
        << "distortion coeffs:" << distCoeffs2 << endl;

    FileNode feature = fs2["feature"];
    FileNodeIterator it = feature.begin(), it_end = feature.end();//定义it
    int idx = 0;
    std::vector<uchar>ibpval;//定义向量容器ibpal?

    //使用FileNodeIterator历遍序列(读取)
    for (; it != it_end; it++, idx++)
    {
        cout << "feature#" << idx << ":";
        cout << "x=" << (int)(*it)["x"] << ",y=" << (int)(*it)["y"] << ",ibp:(";
        //也可以使用filenod>>std::vector操作符很容易读取数值阵列
        (*it)["ibp"] >> ibpval;
        for (int i = 0; i < (int)ibpval.size(); i++)
            cout << "" << (int)ibpval[i];
        cout << ")" << endl;
    }


    fs2.release();
    printf("读取完毕,请按任意键结束-");
    getchar();

    return 0;
}
}
查看评论

opencv学习(十七)之XML和YAML文件读写操作

可能大部分人到现在接触的XML和YAML文件很少,等以后训练人脸模型进行人脸识别的时候用的就多了。现在先了解一下这两种文件类型。 XML:Extensible Markup Language,可扩展...
  • keith_bb
  • keith_bb
  • 2016-12-13 23:02:06
  • 2161

Open中FileStorage使用

Open中FileStorage使用介绍 简介由于OpenCV中检测中,很多源码涉及到相关信息写入文件或从文件中读取,故将其相关内容总结如下。FileStorage主要作用:将相关信息写入YAML或X...
  • yzhang6_10
  • yzhang6_10
  • 2016-04-01 10:43:06
  • 3808

opencv学习笔记(二)-对xml和yaml文件的读写操作

一.xml和yaml的简单介绍        所谓的xml,就是eXtensible Markup Language, 翻译成中文就是“可扩展标识语言“。首先XML是一种元标记语言,所谓“元标记”就...
  • dujian996099665
  • dujian996099665
  • 2013-05-03 11:43:15
  • 11757

opencv 操作XML,读写数组

自己整理的,使用OPENCV读写XML文件的数组,不是很完善,欢迎拍砖!//将图片存为xml文件程序:#include #include #include using namespace std;#i...
  • aguisy
  • aguisy
  • 2010-08-04 09:56:00
  • 3459

OpenCv中FileStorage类读写XML文件的示例Demo

/***************************************************************************************************...
  • maweifei
  • maweifei
  • 2016-10-09 17:19:31
  • 1265

FileStorage 文件读写操作

本片博客重点利用FileStorage 进行文件读写操作练习; 创建一个common.hpp文件,存放结构体 #ifndef common_hpp #define common_hpp #inc...
  • u011559236
  • u011559236
  • 2017-11-20 17:37:30
  • 355

OpenCv的xml读写

int sub_test_opencv_xml_write(void) { // 创建文件存储对象 CvFileStorage *fs=cvOpenFileStorage("test.xml...
  • Augusdi
  • Augusdi
  • 2013-04-28 22:08:28
  • 8312

OPenCv采用FileStorage类读写xml或者yml文件----程序

Opencv采用FileStorage类读写xml文件。 用opencv进行人脸检测时可以看到opencv自带的人脸分类器实际上是一个个的xml文件。存放在安装路径下的opencv\data\haa...
  • wangxiaokun671903
  • wangxiaokun671903
  • 2014-10-14 15:40:51
  • 1275

Opencv基础之FileStorage的读写操作

FileStorage类
  • Coma_6512
  • Coma_6512
  • 2017-10-14 10:47:28
  • 195

opencv中的FileStorage类使用注意事项

FileStorage类是opencv中用来进行文件操作的封装类,可以对XML,YAML,txt甚至doc文件进行读写操作。在使用opencv时经常需要对特征数据等进行保存,这时候通常会选择XML文件...
  • owen7500
  • owen7500
  • 2016-03-31 20:32:42
  • 3739
    个人资料
    持之以恒
    等级:
    访问量: 0
    积分: 170
    排名: 0
    文章分类
    文章存档