我希望使用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维基说要用cvSave,但我找不到这样的方法。事实上,在文档中找不到cvSave(http://www.emgu.com/wiki/files/3.1.0)
对于发现自己有同样问题的人,我找到了一种保存相机矩阵的方法,该方法不使用上述任何方法。
我只是从Emgu.CV实例化一个FileStorage类的对象(http://emgu.com/wiki/files/3.1.0/document/html/c0942d4b-fcd7-38b9-a1c8-1ac9413e53eb.htm)。"filePath"包含完整的目录地址和fileName.xml
fs = new FileStorage(filePath, FileStorage.Mode.Write);
fs.Write(matrixData);
我不确定这是否是最好的方法,但它确实创建了.xml文件,并将matmatrixData写入该文件。