将EMGUCV VectorOfKeyPoint保存到XML并再次加载

时间:2012-12-12 10:23:42

标签: c# .net opencv emgucv

使用EMGUCV,对于C#,可以将Matrix保存到XML,以便以后阅读。 由于VectorOfKeyPoint是Serializable类,因此它也可以保存为XML文件。 尽管如此,当它打开时,此UnmanagedObject VectorOfKeyPoint为空并且无法使用。

是否有可能以这种方式做某事,这意味着,为了从XML加载VectorOfKeyPoint并以相同的方式使用它?

如今,工作代码,如EMGU Wiki中所述,但为VectorOfKeyPoint而改变:

Parsing from/to XML

1 个答案:

答案 0 :(得分:2)

终于能够做到了。

不是序列化VectorOfKeyPoint本身(不起作用),而是可以序列化它的点。

例如

序列化:

VectorOfKeyPoint vectorOfKeyPoints = new VectorOfKeyPoint();
StringBuilder sb = new StringBuilder();
MKeyPoint[] keyPoints = vectorOfKeyPoints.ToArray();
(new XmlSerializer(typeof(MKeyPoint[]))).Serialize(new StringWriter(sb), keyPoints);
xmlKeyPoints = sb.ToString();

反序列化:

XmlReader xmlReader = XmlReader.Create(new StringReader(xmlStr)); 
MKeyPoint[] arrayOfKeyPoints = (MKeyPoint[])(new XmlSerializer(typeof(MKeyPoint[]))).Deserialize(xmlReader);
VectorOfKeyPoint vectorOfKeyPoints = new VectorOfKeyPoint();
vectorOfKeyPoints.Push(arrayOfKeyPoints);