Opencv,读取XML文件进行相机校准时出错

时间:2017-07-20 01:47:44

标签: xml opencv camera-calibration

我使用opencv提供的the code进行相机校准。 我已经编辑了设置文件以包含我自己的目录,它看起来像这样:

<?xml version="1.0"?>
<opencv_storage>
<images>
"20170720_024951.jpg"
"20170720_025001.jpg"
"20170720_025014.jpg"
"20170720_025023.jpg"
"20170720_025034.jpg"
"20170720_025048.jpg"
"20170720_025103.jpg"
"20170720_025115.jpg"
"20170720_025124.jpg"
"20170720_025133.jpg"
"20170720_025147.jpg"
"20170720_025155.jpg"
"20170720_025211.jpg"
</images>

我提供完整的图片路径,但收到此错误:

  

检测到无效输入。申请停止。

这是我收到错误的代码部分:

Settings s;
const string inputSettingsFile = "C:/Users/user/Documents/Visual Studio 2013/Projects/calibration/x.xml";
FileStorage fs(inputSettingsFile, FileStorage::READ); // Read the settings
if (!fs.isOpened())
{
    cout << "Could not open the configuration file: \"" << inputSettingsFile << "\"" << endl;
    return -1;
}
fs["Settings"] >> s;
fs.release();                                         // close Settings file
//! [file_read]

//FileStorage fout("settings.yml", FileStorage::WRITE); // write config as YAML
//fout << "Settings" << s;

if (!s.goodInput)
{
    cout << "Invalid input detected. Application stopping. " << endl;
    return -1;
}

oencv提供的原始文件并不包含&#34;&#34;围绕属性(图像的路径),所以我首先尝试在中使用双引号&#34;路径/图像插入图像的路径 .JPG&#34; - &GT;路径/图像,但引发了以下异常:

  

OpenCV错误:解析错误(C:/ Users / user / Documents / Visual Studio   2013 / Projects / calebration / x.xml(1):属性值应该   在icvXMLParseTag文件中加入单引号或双引号   C:\建立\ master_PackSlave-Win64的-VC12共享\的OpenCV \模块\芯\ SRC \ persistence.cpp,   第2157行

并在添加&#34;&#34;根据某人的建议,该异常消失但仍然停留在第一个错误(这是告诉,因为我认为 xml文件的格式不正确)

3 个答案:

答案 0 :(得分:0)

您的文件末尾似乎缺少</opencv_storage>。您需要关闭XML的标记才能生效。

答案 1 :(得分:0)

好的问题解决了: 对于第二个问题

  

OpenCV错误:解析错误(C:/ Users / user / Documents / Visual Studio   2013 / Projects / calebration / x.xml(1):应该放入属性值   icvXMLParseTag文件中的单引号或双引号   C:\建立\ master_PackSlave-Win64的-VC12共享\的OpenCV \模块\芯\ SRC \ persistence.cpp,   第2157行

事实证明,我的图像的路径包含空格,所以通过将图像移动到不包含空格的另一个目录来解决这个问题。

对于第一个问题我完全是个傻瓜! 使用你需要两个xml文件的代码!
第一个是您放置校准设置的位置(例如,您是使用棋盘,圆网格或其他什么,以及您正在使用的棋盘的大小,以及您的图像存在的第二个xml的目录,....)
在第二个xml文件中插入图像,如我的问题所示。

答案 2 :(得分:0)

我遇到了同样的问题,只是删除目录路径中的空格,它应该可以工作

C:/用户/用户/文档/ Visual Studio 2013 / Projects / calebration / x.xml

应为: C:/用户/用户/文档/Visual_Studio_2013/Projects/calebration/x.xml