後で使用するために、トレーニング済みの期待値最大化モデルのパラメーターを XML ファイルから読み取ろうとしています。私が呼び出すモデルを保存するために
cv::FileStorage fs("model.xml",cv::FileStorage::WRITE);
classifier.write(fs); //classifier is of type cv::EM
これにより、モデルのデータのように見えるものを含むファイルが作成されます。ファイルは次のようになります (最初の数行)。
StatModel.EM 1
<_ type_id="opencv-matrix"> 3 3 d
1.2159868951764311e+01 0. 0. 0. 1.9776824566023249e-01 0. 0. 0. .2204460492503131e-16
<_ type_id="opencv-matrix"> 3 3 d
3.2869203526862529e+00 0. 0. 0. 1.1631692248472096e+00 0. 0. 0. 2.2204460492503131e-16
<_ type_id="opencv-matrix"> 3 3 d
2.9815870012055705e+00 0. 0. 0. 6.5049770685681069e+03 0. 0. 0. 6.8510191786605528e+03
<_ type_id="opencv-matrix"> 3 3 d
4.6608996548002040e+00 0. 0. 0. 3.7558131457318683e+02 0. 0. 0. 2.2204460492503131e-16
XML ヘッダーがないことに注意してください。今私が使用しているデータを読み取るために
cv::FileStorage fs("model.xml",cv::FileStorage::READ);
cv::Algorithm::read() 関数は、filenode をパラメータとして呼び出す必要があります。どのノードを使用すればよいかわかりません。私が試したファイルにはノードが1つしかないと予想されるので
classifier.read(fs[0]);
ただし、アルゴリズムは後でトレーニングされません。元のパラメータを復元するにはどうすればよいですか?