2017-12-12 12 views
1

OpenCVのYMLファイルは可能ですか?その名前を知らずにファイルの最初の行列を取得できますか? 私はusuaullyこのようにそれを実行します。行列名を知らずにOpenCVでYMLを読む

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

AがAと命名されていることを知らずにこれを達成するためにどのように?

私はファイルを手動で解析せずに名前を調べるソリューションに興味があります。

答えて

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; 
} 
関連する問題