zoukankan      html  css  js  c++  java
  • 14 opencv读取XML

    https://blog.csdn.net/A_L_A_N/article/details/83272772

    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();
    }
    

      

  • 相关阅读:
    Linux 使用 ssh 命令远程连接另一台 Linux
    高并发连接导致打开文件过多:java.io.IOException: Too many open files 解决方法
    WEB安全:Tomcat 只可通过域名访问,禁止通过 IP 访问
    Jmeter
    CentOS 7 开启 SNMP 实现服务器性能监控
    SSM框架、Druid连接池实现多数据源配置(已上线使用)
    Tomcat 服务器安装 SSL证书,实现 HTTP 自动跳转 HTTPS
    java操作远程共享目录
    jobss目录结构
    oracle中if/else的三种实现方式
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/11918887.html
Copyright © 2011-2022 走看看