使用 opencv 中的文件存储将多个 Mat 变量写入 XML 文件
Posted
技术标签:
【中文标题】使用 opencv 中的文件存储将多个 Mat 变量写入 XML 文件【英文标题】:writing more than one Mat variable to an XML file using filestorage in opencv 【发布时间】:2015-11-23 11:51:25 【问题描述】:我在时遇到问题。我正在使用 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。改变现在问题已经解决了
【参考方案1】:
问题终于解决了,在项目配置属性>链接器>输入>附加依赖项中我设置了opencv_world300.lib,而它应该是opencv_world300d.lib。改成现在问题解决了
【讨论】:
以上是关于使用 opencv 中的文件存储将多个 Mat 变量写入 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章