2016-05-16 61 views
1

我希望使用EMGU OpenCV將我的相機的校準參數保存在XML文件中。參數在Mat數據類型中,所以我試圖將Mat轉換爲XML。C#中的XML到XML Emgu

我不斷收到反射類型異常:「您必須在System.Array上實現默認訪問器,因爲它繼承自ICollection」。有誰知道如何解決這個問題?

 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(); 

我也曾嘗試

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

但它給出了一個錯誤信息說「保存到XML不支持」。使用Imwrite代替也給了一個錯誤信息(「找不到特定擴展名的作者」)。

EMGU wiki說要使用cvSave,但是我找不到這樣的方法。事實上,cvSave無法在文檔中找到(http://www.emgu.com/wiki/files/3.1.0

回答

0

對於任何發現自己遇到同樣問題的人,我找到了一種保存未使用上述方法的相機矩陣的方法。

我只是從Emgu.CV(http://emgu.com/wiki/files/3.1.0/document/html/c0942d4b-fcd7-38b9-a1c8-1ac9413e53eb.htm)實例化FileStorage類的一個對象。 「文件路徑」包含完整的目錄地址和filename.xml中

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

我不知道這是否是最好的方式,但它確實創造了.xml文件,並寫了墊子matrixData到文件中。