我试图将“cv::FileStorage”中包含的内容“读取”到CvRTrees(CvStatModel实现之一)中。
“读取”功能需要CvFileStorage *和CvFileNode *(第二个参数)
看来我可以从cv::FileStorage获取CvFileStorage,但无法获取CvFileNode *。
函数(fs.getFirstTopLevelNode()。node和fs [“someName”])都返回“const CvFileNode *”而不是“CvFileNode *”,并且(另一种解决方案)我无法到达CvFileStorage *的内部。
到目前为止,我正在尝试以下解决方案:
string s = "some stuffs" // in the real code, "s" is actually exported from a rtree ("write" function)
cv::FileStorage fs(s, cv::FileStorage::READ + cv::FileStorage::MEMORY);
CvRTrees* rtree = new CvRTrees();
rtree->read(fs.fs,fs.fs->cvGetFileNodeByName("mytree"));
错误:
error C2027: use of undefined type 'CvFileStorage'
CvFileStorage的定义是:typedef struct CvFileStorage CvFileStorage;
要么
string s = "some stuffs"
cv::FileStorage fs(s, cv::FileStorage::READ + cv::FileStorage::MEMORY);
CvRTrees* rtree = new CvRTrees();
rtree->read(fs.fs,fs["mytree"].node);
错误:
error C2664: 'CvRTrees::read' : cannot convert parameter 2 from 'const CvFileNode *' to 'CvFileNode *'
两种解决方案都在编译时失败(总是由于第二个参数“read”)。
你们知道如何处理吗?
提前致谢。
cho
最佳答案
是的,这里有点笨拙,您必须使用重载*运算符才能从FileStorage访问CvFileNode:
FileStorage fs("my.yml", FileStorage::WRITE);
dtree.write(*fs,"dst");
关于c++ - 将cv::FileStorage转换为CvFileStorage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17353344/