opencv- FileStorage數據的讀取與保存


支持讀寫XML, YAML, JSON 格式文件,后綴名為.xml , .yml , .yaml , .json

保存數據

    //cv::FileStorage(const string& source, int flags, const string& encoding=string());
    //創建方式一
    //cv::FileStorage fs("D:\\bb\\tt.yml", cv::FileStorage::WRITE);//創建FileStorage實例
    /*
    參數1:存儲或讀取數據的文件名(字符串)
    參數2:操作模式,包括:
            FileStorage::READ 打開文件進行讀操作
            FileStorage::WRITE 打開文件進行寫操作
            FileStorage::APPEND打開文件進行附加操作
            FileStorage::MEMORY 從source讀數據,或向內部緩存寫入數據(由FileStorage::release返回)
    參數3:encoding – 文件編碼方式。目前不支持UTF-16 XML 編碼,應使用 8-bit 編碼

    */

    //創建方式二
    cv::FileStorage fs;
    fs.open("D:\\bb\\tt.yml", cv::FileStorage::WRITE);

    

    //保存數值
    int imageWidth = 5;
    int imageHeight = 10;
    fs << "imageWidth" << imageWidth;
    fs << "imageHeight" << imageHeight;

    //保存矩陣
    cv::Mat m1 = cv::Mat::eye(3, 3, CV_8U);
    fs << "m1" << m1;

    bool b = fs.isOpened(); //文件是否打開
    //ture – 如果對象關聯了當前文件;false – 其他情況
    std::cerr << b << std::endl;

    fs.release();

 

 

讀取數據 

    cv::FileStorage fs;
    fs.open("D:\\bb\\tt.yml", cv::FileStorage::READ);
    
    //讀取普通數據
    int width;
    int height;
    fs["imageWidth"] >> width;//讀取映射名為imageWidth的數據賦值給width
    fs["imageHeight"] >> height;
    std::cout << "width readed = " << width << std::endl;
    std::cout << "height readed = " << height << std::endl;

    //讀取矩陣
    cv::Mat resultMatRead;
    fs["m1"] >> resultMatRead;//讀取映射名為m1的矩陣賦值給resultMatRead  
    std::cerr << resultMatRead << std::endl;
    
    fs.release();

 

  

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM