public static DistortionParameters Import(string path, Size imageSize) { if (!File.Exists(path)) { return(null); } DistortionParameters parameters = null; try { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.IgnoreWhitespace = true; settings.CloseInput = true; using (XmlReader r = XmlReader.Create(path, settings)) { r.MoveToContent(); parameters = DistortionSerializer.Deserialize(r, imageSize); } } catch { log.ErrorFormat("Import of lens distortion parameters failed."); } return(parameters); }
public static void Export(string path, DistortionParameters parameters, Size imageSize) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.CloseOutput = true; using (XmlWriter w = XmlWriter.Create(path, settings)) { DistortionSerializer.Serialize(w, parameters, true, imageSize); } }
public void ReadXml(XmlReader r, PointF scale, Size imageSize) { r.ReadStartElement(); while (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "CalibrationPlane": calibratorType = CalibratorType.Plane; calibrator = calibrationPlane; calibrationPlane.ReadPlaneXml(r, scale); ComputeCoordinateSystemGrid(); break; case "CalibrationLine": calibratorType = CalibratorType.Line; //calibrator = calibrationLine; calibrator = calibrationPlane; calibrationPlane.ReadLineXml(r, scale); //calibrationLine.ReadXml(r, scale); break; case "CalibrationDrawingId": Guid result; bool parsed = Guid.TryParse(r.ReadElementContentAsString(), out result); if (parsed) { calibrationDrawingId = result; } break; case "Unit": lengthUnit = (LengthUnit)Enum.Parse(typeof(LengthUnit), r.ReadElementContentAsString()); break; case "CameraCalibration": DistortionParameters parameters = DistortionSerializer.Deserialize(r, imageSize); distortionHelper.Initialize(parameters, imageSize); break; default: string unparsed = r.ReadOuterXml(); log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed); break; } } r.ReadEndElement(); AfterCalibrationChanged(); }
public void WriteXml(XmlWriter w) { if (calibratorType == CalibratorType.Line) { w.WriteStartElement("CalibrationLine"); calibrationLine.WriteXml(w); w.WriteEndElement(); } else if (calibratorType == CalibratorType.Plane) { w.WriteStartElement("CalibrationPlane"); calibrationPlane.WriteXml(w); w.WriteEndElement(); } w.WriteStartElement("Unit"); w.WriteAttributeString("Abbreviation", GetLengthAbbreviation()); w.WriteString(lengthUnit.ToString()); w.WriteEndElement(); DistortionSerializer.Serialize(w, distortionHelper.Parameters, false, imageSize); }