如何将数据写入opencv文件夹内的xml文件?

时间:2014-07-15 15:04:17

标签: c++ opencv

我正在使用opencv从文件中写入/读取一些数据。这是我的代码和配置文件的结构。

/src/test.cpp
/src/config/FrameDifferenceBGS.xml

代码是

CvFileStorage * fs = cvOpenFileStorage(".config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE);
cvWriteInt(fs,"enableThreshold",21);
cvReleaseFileStorage(&fs);

这不起作用。

给了我同样的错误

'OpenCV错误:cvWriteInt中的空指针(文件存储指针无效),文件/home/winawer/Downloads/opencv-2.4.9/modules/core/src/persistence.cpp,第2964行 抛出'cv :: Exception'的实例后终止调用

但是,如果我将文件更改为与源代码相同的级别,

/src/test.cpp
/src/FrameDifferenceBGS.xml


CvFileStorage * fs = cvOpenFileStorage("FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE);

这很有效。

所以我的问题是如何将数据写入与源代码不同的文件中?

解决方案:  现在我找出解决方案,我应该将config文件夹放在项目调试文件夹而不是项目源文件夹

2 个答案:

答案 0 :(得分:1)

您错过了/

CvFileStorage * fs = cvOpenFileStorage(".config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE);

应该是

CvFileStorage * fs = cvOpenFileStorage("./config/FrameDifferenceBGS.xml",0,CV_STORAGE_WRITE);

由于cvOpenFileStorage()失败,因为没有名为.config的目录

,因此出现空指针错误

答案 1 :(得分:0)

如果要使用相对路径,则格式正确为:

"./config/FrameDifferenceBGS.xml"

/config/FrameDifferenceBGS.xml

现在,您应该知道此相对路径的基(根)路径。据我所知,相对路径是相对于输出目录。 如果您在调试模式下工作,项目输出目录是 Debug 文件夹,否则它是Release文件夹。