void IXmlSerializable.ReadXml(XmlReader reader) { reader.ReadStartElement("feature"); reader.ReadToFollowing("rects"); reader.ReadToFollowing("_"); var rec = new List <HaarRectangle>(); while (reader.Name == "_") { var str = reader.ReadElementContentAsString(); rec.Add(HaarRectangle.Parse(str)); while (reader.Name != "_" && reader.Name != "tilted" && reader.NodeType != XmlNodeType.EndElement) { reader.Read(); } } Rectangles = rec.ToArray(); reader.ReadToFollowing("tilted", reader.BaseURI); Tilted = reader.ReadElementContentAsInt() == 1; reader.ReadEndElement(); }
private void WriteRectangle(HaarRectangle rectangle) { _writer.Write("new int[] {{ {0}, {1}, {2}, {3}, {4} }}", rectangle.X.ToString(NumberFormatInfo.InvariantInfo), rectangle.Y.ToString(NumberFormatInfo.InvariantInfo), rectangle.Width.ToString(NumberFormatInfo.InvariantInfo), rectangle.Height.ToString(NumberFormatInfo.InvariantInfo), rectangle.Weight.ToString("R", NumberFormatInfo.InvariantInfo)); }
/// <summary> /// Constructs a new Haar-like feature. /// </summary> /// public HaarFeature(bool tilted, params int[][] rectangles) { Tilted = tilted; Rectangles = new HaarRectangle[rectangles.Length]; for (var i = 0; i < rectangles.Length; i++) { Rectangles[i] = new HaarRectangle(rectangles[i]); } }
/// <summary> /// Creates a new object that is a copy of the current instance. /// </summary> /// <returns> /// A new object that is a copy of this instance. /// </returns> public object Clone() { var newRectangles = new HaarRectangle[Rectangles.Length]; for (var i = 0; i < newRectangles.Length; i++) { var rect = Rectangles[i]; newRectangles[i] = new HaarRectangle(rect.X, rect.Y, rect.Width, rect.Height, rect.Weight); } return(new HaarFeature { Rectangles = newRectangles, Tilted = Tilted }); }
/// <summary> /// Creates a new object that is a copy of the current instance. /// </summary> /// <returns> /// A new object that is a copy of this instance. /// </returns> public object Clone() { var r = new HaarRectangle { Height = Height, ScaledHeight = ScaledHeight, ScaledWeight = ScaledWeight, ScaledWidth = ScaledWidth, ScaledX = ScaledX, ScaledY = ScaledY, Weight = Weight, Width = Width, X = X, Y = Y }; return(r); }