代码之家  ›  专栏  ›  技术社区  ›  sdarella

C#Emgu中的Mat到XML

  •  2
  • sdarella  · 技术社区  · 8 年前

    我希望使用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 )

    1 回复  |  直到 8 年前
        1
  •  1
  •   sdarella    8 年前

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

    我只是从Emgu中实例化了FileStorage类的一个对象。CV公司( 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写入该文件。