在C#Emgu中使用mat to XML

时间:2016-05-16 02:10:09

标签: c# xml opencv mat

我希望使用EMGU OpenCV将我的相机的校准参数保存在XML文件中。参数是Mat数据类型,所以我试图将Mat转换为XML。

我一直得到一个反射类型异常:"你必须在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,但我找不到这样的方法。实际上,在文档(http://www.emgu.com/wiki/files/3.1.0

中找不到cvSave

1 个答案:

答案 0 :(得分:1)

对于发现自己有同样问题的人,我找到了一种保存不使用上述任何方法的相机矩阵的方法。

我只是从Emgu.CV(http://emgu.com/wiki/files/3.1.0/document/html/c0942d4b-fcd7-38b9-a1c8-1ac9413e53eb.htm)实例化FileStorage类的对象。 “filePath”包含完整的目录地址和fileName.xml

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

我不确定这是否是最好的方法,但它确实创建了.xml文件并将mat matrixData写入文件。