2016-05-16 2 views
1

Ich möchte die Kalibrierungsparameter meiner Kameras in XML-Dateien mit EMGU OpenCV speichern. Die Parameter sind im Mat-Datentyp, also versuche ich Mat nach XML zu konvertieren.Mat zu XML in C# Emgu

Ich bekomme immer eine reflecting-Typ-Ausnahme: "Sie müssen einen Standard-Accessor auf System.Array implementieren, da er von ICollection erbt". Würde jemand wissen, wie man dieses Problem beheben kann?

 XmlSerializer serializer = new XmlSerializer(typeof(Mat)); 
     Stream fs = new FileStream(path, FileMode.Create); 
     XmlWriter writer = new XmlTextWriter(fs, Encoding.Unicode); 
     serializer.Serialize(writer, XMLData); 
     writer.Flush(); 

Ich habe auch versucht,

XMLData.Save(path+"calib.xml"); 

Aber es gibt eine Fehlermeldung sagen, dass „zu XML-Speicher werden nicht unterstützt“. Bei der Verwendung von Imwrite wurde stattdessen ebenfalls eine Fehlermeldung angezeigt ("Es konnte kein Writer für die spezifische Erweiterung gefunden werden").

EMGU Wiki sagt cvSave zu verwenden, aber ich konnte eine solche Methode nicht finden. CvSave ist nirgendwo in der Dokumentation zu finden (http://www.emgu.com/wiki/files/3.1.0)

Antwort

0

Für alle, die sich mit dem gleichen Problem finden, habe ich eine Möglichkeit gefunden, die Kameramatrizen zu speichern, die keine der oben genannten Methoden verwendet.

Ich instanziieren Sie einfach ein Objekt der FileStorage-Klasse von Emgu.CV (http://emgu.com/wiki/files/3.1.0/document/html/c0942d4b-fcd7-38b9-a1c8-1ac9413e53eb.htm). „FilePath“ enthält die vollständige Verzeichnis-Adresse und filename.xml

fs = new FileStorage(filePath, FileStorage.Mode.Write); 
fs.Write(matrixData); 

Ich bin nicht sicher, ob dies der beste Weg ist, aber es hat die XML-Datei erstellen und schrieb die Matte matrixData in die Datei.