我想使用cv::fileStorage将校准结果另存为XML文件,例如:

   cv::FileStorage fs = cv::FileStorage("calibration_result.xml",cv::FileStorage::FORMAT_XML||cv::FileStorage::WRITE);

这不起作用,但是当我选择yml扩展名时起作用吗?知道为什么会这样吗?
提前致谢 !

最佳答案

试试下面的代码。它应该工作。

...
FileStorage fs("calibration_result.xml", FileStorage::WRITE);
Mat R = Mat_<uchar >::eye  (3, 3),
    T = Mat_<double>::zeros(3, 1);

fs << "R" << R;                                      // Write cv::Mat
fs << "T" << T;
fs.release();
...

我已经对其进行了测试,并写入了包含内容的文件:
<?xml version="1.0"?>
<opencv_storage>
<R type_id="opencv-matrix">
  <rows>3</rows>
  <cols>3</cols>
  <dt>u</dt>
  <data>
    1 0 0 0 1 0 0 0 1</data></R>
<T type_id="opencv-matrix">
  <rows>3</rows>
  <cols>1</cols>
  <dt>d</dt>
  <data>
    0. 0. 0.</data></T>
</opencv_storage>

关于c++ - 不能使用cv::fileStorgae保存XML文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19640244/

10-08 21:31