OpenCV错误地写入XML - 节点重复

时间:2015-07-22 20:18:33

标签: c++ xml opencv

我正在写OpenCV中的XML文件,我遇到了一个错误地写入节点的问题。我的代码:

FileStorage fs(s.outputFileName, FileStorage::WRITE);  

fs << "camera_matrix" << cameraMatrix;          
fs << "distCoeffs" << distCoeffs;       
fs << "image_width" << imageSize.width;    
fs << "image_height" << imageSize.height;

fs.release();

cameraMatrixdistCoeffs都是Mat对象。

我的XML输出文件如下所示:

<?xml version="1.0"?>
<opencv_storage>
<camera_matrix type_id="opencv-matrix">
   <rows>3</rows>
   <cols>3</cols>
   <dt>d</dt>
   <data>
    4.6490822605835838e+003 0. 1.4075000000000000e+003 0.
    4.6490822605835838e+003 9.3950000000000000e+002 0. 0. 1  </data></camera_matrix>
<camera_matrix>distCoeffs</camera_matrix>
<camera_matrix type_id="opencv-matrix">
   <rows>5</rows>
   <cols>1</cols>
   <dt>d</dt>
   <data>
    -1.1104540491479253e-001 3.2257882031809664e+000 0. 0.
    -3.2884118325204533e+001</data></camera_matrix>
<image_width>2816</image_width>
<image_width>image_height</image_width>
<image_width>1880</image_width>
</opencv_storage>

出于某种原因,不是将distCoeffs Mat对象存储为名为<distCoeffs>的节点,而是将其存储为名称<camera_matrix>,而不是存储整数{{1在节点名称image_height下,它存储在<image_height>下。为什么会这样?我看了一眼OpenCV documentation,但找不到我做错了什么。在Visual Studio 2013中使用OpenCV 3.0.0。

编辑:我可以使用此测试代码重现错误:

<image_width>

1 个答案:

答案 0 :(得分:0)

这是我使用的平台的一个问题。在我的解决方案中,其他一个项目的平台不正确。解决这个问题。