2017-12-12 9 views
1

OpenCV에서 YML 파일을 사용할 수 있습니까? 이름을 모른 채 파일의 첫 번째 행렬을 검색 할 수 있습니까? 나는 usuaully는 다음과 같이 할 :행렬 이름을 모르더라도 OpenCV에서 YML 읽기

cv::FileStorage fs("foo.yml", cv::FileStorage::READ); 
cv::Mat bar; 
fs["A"] >> bar; 

어떻게이라는 것을 모르고을 달성하기 위해?

파일을 수동으로 구문 분석하지 않고 이름을 알아내는 솔루션에 관심이 있습니다. 당신이 YML의 구조를 알고 있다면

답변

1

, 당신은 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; 
}