Je suis en train de lire les paramètres d'un modèle de maximisation de l'espérance entraîné à partir d'un fichier XML pour une utilisation ultérieure. Pour stocker le modèle, j'appelle
cv::FileStorage fs("model.xml", cv::FileStorage::WRITE);
classifier.write(fs); //classifier est de type cv::EM
cela crée le fichier contenant ce qui ressemble aux données du modèle. Voici à quoi ressemble le fichier (premières lignes depuis le début):
StatModel.EM 1
<_ type_id="opencv-matrix"> 3 3 d
1.2159868951764311e+01 0. 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
Remarquez que l'en-tête XML est manquant. Maintenant, pour lire les données, j'utilise
cv::FileStorage fs("model.xml", cv::FileStorage::READ);
la fonction cv::Algorithm::read() doit être appelée avec un filenode comme paramètre. Je ne suis pas sûr de quel nœud utiliser. Comme je m'attends à ce qu'il n'y ait qu'un seul nœud dans le fichier, j'ai essayé
classifier.read(fs[0]);
Mais l'algorithme n'est pas entraîné ensuite. Que dois-je faire pour restaurer les paramètres initiaux?