OpenCV中的YML文件是否可能并且在不知道其名称的情况下检索文件中的第一个矩阵? 我通常会这样做:
cv::FileStorage fs("foo.yml", cv::FileStorage::READ);
cv::Mat bar;
fs["A"] >> bar;
如何在不知道A被命名为A的情况下实现这一目标?
我对一个不会手动解析文件并找出名称的解决方案感兴趣。
答案 0 :(得分:1)
如果您了解YML的结构,可以使用FileNode
进行导航,并检索元素:
#include <opencv2\opencv.hpp>
int main()
{
cv::Mat1b src(2, 3);
cv::randu(src, 0, 256);
{
// Create a simple YML file
cv::FileStorage fs("test.yml", cv::FileStorage::WRITE);
fs << "foo" << src;
}
// Read the saved data without knowing the name
cv::FileStorage fs("test.yml", cv::FileStorage::READ);
// Get first node
cv::FileNode fn = fs.getFirstTopLevelNode();
// Get its name
cv::String name = fn.name();
// Retrieve data as usual
cv::Mat res;
fs[name] >> res;
// Or directly from the FileNode
cv::Mat res2;
fn >> res2;
return 0;
}