opencv通过FileStorage读写xml、yaml文件

FileStorage类

FileStorage类将各种OpenCV数据结构的数据存储为XML或YML格式。

构造函数:cv::FileStorage(const string& source, int flags, const string& encoding=string());

参数说明:

source:存储或读取数据的文件名(字符串),其扩展名(.xml 或 .yml或者.yaml)决定文件格式。

flags:操作方式,包括:FileStorage::READ、FileStorage::WRITE、FileStorage::APPEND。

encoding:编码方式,用默认值就好。

 写xml/ymal文件:

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void main()
{
	//标定结果保存
	FileStorage fs("caliResult.xml", FileStorage::WRITE);

	int cameraId = 0;
	Mat intrMatrix = (Mat_<double>(3, 3) << 7.7881772950073355e+002, 0, 3.1562441595543476e+002, 0, 7.8624564811643825e+002, 2.5630331974129393e+002, 0, 0, 1);
	Mat distCoeffs = (Mat_<double>(1, 5) << -7.2660835182078581e-002, 2.0765291395491934e+000, 5.9477659924542790e-004, -8.2981148319346263e-004, -7.0307616798578119e+000);

	fs << "cameraId" << cameraId;
	fs << "intrinsic_parameters" << intrMatrix;
	fs << "distortion_parametes" << distCoeffs;

	fs.release();
}

 保存的.xml文件:

<?xml version="1.0"?>
<opencv_storage>
<cameraId>0</cameraId>
<intrinsic_parameters type_id="opencv-matrix">
  <rows>3</rows>
  <cols>3</cols>
  <dt>d</dt>
  <data>
    7.7881772950073355e+02 0. 3.1562441595543476e+02 0.
    7.8624564811643825e+02 2.5630331974129393e+02 0. 0. 1.</data></intrinsic_parameters>
<distortion_parametes type_id="opencv-matrix">
  <rows>1</rows>
  <cols>5</cols>
  <dt>d</dt>
  <data>
    -7.2660835182078581e-02 2.0765291395491934e+00
    5.9477659924542790e-04 -8.2981148319346263e-04
    -7.0307616798578119e+00</data></distortion_parametes>
</opencv_storage>

读xml/ymal文件:

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void main()
{
    //FileStorage fs("caliResult.xml",FileStorage::READ);
    FileStorage fs;
    fs.open("caliResult.xml",FileStorage::READ);
    if(!fs.isOpened())
    {
        return;
    }

    int cameraId;
    Mat intrMatrix(3,3,CV_64F);
    Mat distCoeffs(5,1,CV_64F);

    fs["cameraId"]>>cameraId;
    fs["intrinsic_parameters"]>>intrMatrix;
    fs["distortion_parametes"]>>distCoeffs;

    fs.release();
}

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值