我正在使用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文件夹放在项目调试文件夹而不是项目源文件夹
答案 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文件夹。