https://blog.csdn.net/A_L_A_N/article/details/83272772
ファイル記憶クラス
各種データやXML形式YMLのデータ構造がFileStorage OpenCVのクラスを格納します。
构造函数:CV ::がFileStorage(CONST文字列&ソース、INTフラグ、CONST文字列&コード=文字列())。
パラメータ:
ソース:ストアまたはデータファイル名(文字列)、その拡張子(.xmlファイルまたは.ymlまたは.yaml)決定したファイル形式をお読みください。
フラグ:備えた動作モード、:がFileStorage :: READ、WRITEがFileStorage ::、がFileStorage :: APPEND。
エンコード:のようなデフォルト値で符号化します。
書き込みXML / ymalファイル:
書式#include <iostreamの> 書式#include <opencv2 / opencv.hpp> 名前空間stdを使用。 名前空間の品種を使用しました。 無効メイン() { //校正結果を保存します ファイル記憶FS( "caliResult.xml"、がFileStorage :: WRITE)。 int型cameraId = 0; マットintrMatrix =(Mat_ <ダブル>(3,3)<< 7.7881772950073355e + 002、0、3.1562441595543476e + 002、0、7.8624564811643825e + 002、2.5630331974129393e + 002、0、0、1)。 マットdistCoeffs =(Mat_ <ダブル>(1,5)<< -7.2660835182078581e-002、2.0765291395491934e + 000、5.9477659924542790e-004、-8.2981148319346263e-004、-7.0307616798578119e + 000)。 FS << "cameraId" << cameraId。 FS << "intrinsic_parameters" << intrMatrix。 FS << "distortion_parametes" << distCoeffs。 fs.release(); }
.xmlファイルを保存します。
<?xml version = "1.0"?> <opencv_storage> <cameraId> 0 </ cameraId> <intrinsic_parameters TYPE_ID = "OpenCVのマトリクス"> <行> 3 </行> <COLS> 3 </ COLS> <DT> D </ DT> <データ> 7.7881772950073355e + 02 0 3.1562441595543476e + 02 0。 7.8624564811643825e + 02 2.5630331974129393e + 02 0 0 1 </データ> </ intrinsic_parameters> <distortion_parametes TYPE_ID = "OpenCVのマトリクス"> <行> 1 </行> <COLS> 5 </ COLS> <DT> D </ DT> <データ> -7.2660835182078581e-02 2.0765291395491934e + 00 5.9477659924542790e-04 -8.2981148319346263e-04 -7.0307616798578119e + 00 </データ> </ distortion_parametes> </ opencv_storage>
XML / ymalファイルを読みます:
書式#include <iostreamの> 書式#include <opencv2 / opencv.hpp> 名前空間stdを使用。 名前空間の品種を使用しました。 無効メイン() { //ファイル記憶FS( "caliResult.xml"、がFileStorage :: READ)。 ファイル記憶FS; fs.open( "caliResult.xml"、がFileStorage :: READ)。 (もし!fs.isOpened()) { リターン; } int型cameraId; マットintrMatrix(3,3、CV_64F)。 マットdistCoeffs(5,1、CV_64F)。 FS [ "cameraId"] >> cameraId。 FS [ "intrinsic_parameters"] >> intrMatrix。 FS [ "distortion_parametes"] >> distCoeffs。 fs.release(); }