OpenCV中.xml .yml .yaml 文件的读写操作(矩阵读写)。

1.   这是做相机标定的结果.xml文件 保存部分。

#include "opencv2/opencv.hpp"
<p>using namespace cv;
</p>FileStorage camcalibrate("camcalibrate.xml", FileStorage::WRITE);


cv::Mat cameraMatrix= cameraCalibrator.getCameraMatrix();
cv::Mat DistCoeffsMatrix= cameraCalibrator.getDistCoeffs();

camcalibrate<< "cameraMatrix" << cameraMatrix << "distCoeffs" << DistCoeffsMatrix.t();


camcalibrate.release();

cv::waitKey();


文件结果如下:

<?xml version="1.0"?>
<opencv_storage>
<read>"camera calibration by kint at 05.02.03"</read>
<imageCount>12</imageCount>
<cameraMatrix type_id="opencv-matrix">
  <rows>3</rows>
  <cols>3</cols>
  <dt>d</dt>
  <data>
    5.0519443370436323e+02 0. 3.2083884160474554e+02 0.
    5.0285768483869174e+02 2.3831697216475899e+02 0. 0. 1.</data></cameraMatrix>
<distCoeffs type_id="opencv-matrix">
  <rows>5</rows>
  <cols>1</cols>
  <dt>d</dt>
  <data>
    -9.2216292456289706e-02 6.5000304572855785e-02
    -6.3123997885573520e-04 3.2158869444328347e-03
    5.7265487017375147e-02</data></distCoeffs>
</opencv_storage>

 

2. 过程中出现的问题:

  1)FileStorage的作用域:

using namespace cv;  或  cv::FileStorage camcalibrate("camcalibrate.xml", cv::FileStorage::WRITE);//后一个容易忽略 

  2)  FileStorage 的camcalibrate.xml 文件中未保存有数据。 

    camcalibrate.release();  要有。。   //cv::waitKey(); 在之前先关闭 FileStorage 文件

详细参考:
http://blog.csdn.net/yang_xian521/article/details/6897684
http://blog.csdn.net/mmjwung/article/details/6913540

http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html


你可能感兴趣的:(OpenCV中.xml .yml .yaml 文件的读写操作(矩阵读写)。)