OpenCVはFileStorageを用いるMatデータを保存する.

1768 ワード

この文書はhttp://blog.csdn.net/mmjwung/article/details/6913540
OpenCV 2.0以降のバージョンでは、C++へのサポートが追加され、プログラムコード量が大幅に減少し、プログラムの作成が容易になり、現代のプログラミング思想にも合致しています.
視覚処理の過程で、中間データを保存する必要があることが多い.これらのデータのデータ型は整数ではないことが多い.
OpenCVのC++インタフェースでは、画像を保存するためのimwriteは整数データしか保存できず、画像フォーマットとして必要です.浮動小数点データまたはXML/YMLファイルを保存する必要がある場合、OpenCVのC言語インタフェースはcvSave関数を提供しますが、この関数はC++インタフェースで削除されています.代わりにFileStorageクラスです.
具体的な使い方はこの例を参照してください.
マトリックスストレージ
[cpp] view plain copy print ?
Mat mat = Mat::eye(Size(12,12), CV_8UC1);  
  •  FileStorage fs(".\\vocabulary.xml", FileStorage::WRITE);  

  •  fs<<"vocabulary"<
  •  fs.release();  
  • Mat mat = Mat::eye(Size(12,12), CV_8UC1);
     FileStorage fs(".\\vocabulary.xml", FileStorage::WRITE);
     fs<<"vocabulary"<<mat;
     fs.release();

    別の場所では、このマトリクスデータをロードする必要があります.コードは次のとおりです.
    [cpp] view plain copy print ?
    FileStorage fs(".\\vocabulary.xml", FileStorage::READ);  
  •  Mat mat_vocabulary;  

  •  fs["vocabulary"] >> mat_vocabulary;  
    FileStorage fs(".\\vocabulary.xml", FileStorage::READ);
     Mat mat_vocabulary;
     fs["vocabulary"] >> mat_vocabulary;
    データを格納する場合、fs<<「vocabulary」<データを読み込むとき、[]の内容は指定されたラベルで、>>の変数にデータを読み込みます.