【问题标题】:writing more than one Mat variable to an XML file using filestorage in opencv使用 opencv 中的文件存储将多个 Mat 变量写入 XML 文件
【发布时间】:2015-11-23 11:51:25
【问题描述】:

我在使用 opencv 中的文件存储将多个 Mat 变量写入 XML 文件时遇到问题。我正在使用 VC++ 2012,我可以将每个 Mat 写在一个单独的 xml 文件中,没有任何问题。但是当我尝试编写第二个 Mat 对象时,它会引发异常: test.exe 中 0x000007FEFD06B3DD 处未处理的异常:Microsoft C++ 异常:内存位置 0x00000000002ABE70 处的 cv::Exception。

我曾在这里找到过这个主题,但答案对我没有帮助。引发异常的部分代码如下:

FileStorage fs("c:\\test.xml", FileStorage::WRITE);
Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0); 
fs<<"cameraMatrix" << cameraMatrix ;
fs<< "distCoeffs" << distCoeffs;
fs.release();

第二个fs上抛出异常

fs<< "distCoeffs" << distCoeffs;

你能帮我解决这个问题吗?我已从 opencv 文档中的示例中获取此代码。

【问题讨论】:

  • 在调试中运行并获取错误消息。您确定要链接使用 vc11 编译器构建的 OpenCV?
  • 我已经在调试模式下运行它,并且我正在使用许多其他 opencv 函数没有任何问题,所以我确信构建是正确的。我也在我的主要帖子中提到了错误消息。
  • 代码运行正常。不过,您可能想要更改目标文件夹,因为您可能没有对“C:”的写访问权。尝试简单地使用FileStorage fs("test.xml", FileStorage::WRITE);,该文件将位于项目目录中。某些功能已经工作的事实并不能保证您正确链接。只是为了确定,你能显示你的“图书馆目录”吗?
  • 我对 c: 有写访问权,因为当我只写一个 Mat 时它可以工作。我的库目录也是“C:\OpenCV3.0\build\x64\vc11\lib”
  • 问题终于解决了,在项目配置属性>链接器>输入>附加依赖我已经设置了opencv_world300.lib,而它应该是opencv_world300d.lib。改变现在问题已经解决了

标签: c++ opencv


【解决方案1】:

问题终于解决了,在项目配置属性>链接器>输入>附加依赖项中我设置了opencv_world300.lib,而它应该是opencv_world300d.lib。改成现在问题解决了

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多