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



我使用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);

这工作。

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

解决方案:现在我找到了解决方案,我应该把配置文件夹放在项目调试文件夹中,而不是项目源文件夹

您缺少一个/:

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

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

您得到空指针错误,因为cvOpenFileStorage()失败,因为没有名为.config的目录

如果你想使用相对路径,正确的格式是:

"./config/FrameDifferenceBGS.xml"

/config/FrameDifferenceBGS.xml

现在,您应该知道这个相对路径的根路径。我知道相对路径是相对于输出目录的。如果你在调试模式下工作,你的项目输出目录是 debug 文件夹,否则是Release文件夹

最新更新