OpenCV写入XML错误——节点重复
OpenCV writing to XML incorrectly-- nodes repeating
我正在写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>
的节点,并且将整数image_height
存储为名称为<image_height>
的节点,而不是存储为名称为<image_width>
的节点。为什么会发生这种情况?我看了看OpenCV文档,但找不到我做错了什么。在Visual Studio 2013中使用OpenCV 3.0.0
#include "stdafx.h"
#include <opencv2/core.hpp>
#include <iostream>
using namespace cv;
using namespace std;
static void saveCameraParams(Mat c, Mat d);
int main(int argc, char** argv)
{
Mat cameraMatrix = Mat(3, 3, CV_64F, cvScalar(0.));
Mat distCoeffs = Mat(5, 1, CV_64F, cvScalar(0.));
saveCameraParams(cameraMatrix, distCoeffs);
}
static void saveCameraParams(Mat cameraMatrix, Mat distCoeffs)
{
Size imageSize;
imageSize.width = 3;
imageSize.width = 4;
FileStorage fs("test_out.xml", FileStorage::WRITE);
fs << "camera_matrix" << cameraMatrix;
fs << "distCoeffs" << distCoeffs;
fs << "image_width" << imageSize.width;
fs << "image_height" << imageSize.height;
fs.release();
}
这是我使用的平台的问题。在我的解决方案中,其中一个项目的平台不正确。
相关文章:
- 删除链表中的节点 - 分段错误
- C++错误(从不兼容的类型"void"分配给树节点*)
- 节点 API 抛出自己的错误消息,而不是自己的错误消息
- 树节点之间的最大距离中的运行时错误
- V8 - 节点C++插件 - 在构造函数中引发异常会导致"致命错误:v8::ToLocalChecked Em
- 在BST堆中删除节点免错误
- 解析序列/映射节点时出现无效的 yaml 节点错误
- 节点C++源代码编译错误
- 错误:无法从节点*转换为节点 c++?
- 节点插件编译错误
- 当我将字符串放入节点>名称时,为什么会出现分段错误(核心转储)?
- 分段错误,同时减去链表的 2 个连续节点
- 在 BST 中插入节点时出现逻辑错误
- 当我返回节点*时,C++中出现未知类型错误
- 插件中节点.js/Nan 回调C++不频繁的隔离错误
- YAML-CPP 节点诊断有意义的错误
- 使用括号会在声明新节点时会产生错误
- C++为什么创建一个新节点来删除堆栈上的节点是错误的
- 在链表运行时插入节点错误
- 无法在 Borland C++ 中将'void*'转换为 *poly 节点错误