我正在写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();
cameraMatrix
和distCoeffs
都是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>
答案 0 :(得分:0)
这是我使用的平台的一个问题。在我的解决方案中,其他一个项目的平台不正确。解决这个问题。