我正在尝试从 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() 函数必须以文件节点作为参数调用。我不确定要使用哪个节点。因为我希望我尝试的文件中只有一个节点
classifier.read(fs[0]);
但是该算法之后没有训练。我需要做什么才能恢复原始参数?