/// <summary>
 ///   Constructs a new Haar object detector.
 /// </summary>
 /// <param name="cascade">
 ///   The <see cref="HaarCascade"/> to use in the detector's classifier.
 ///   For the default face cascade, please take a look on
 ///   <see cref="Cascades.FaceHaarCascade"/>.
 /// </param>
 /// 
 public HaarObjectDetector(HaarCascade cascade)
 {
     this.classifier = new HaarClassifier(cascade);
     this.detectedObjects = new List<Rectangle>();
     this.baseWidth = cascade.Width;
     this.baseHeight = cascade.Height;
 }
        /// <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()
        {
            HaarCascadeStage[] newStages = new HaarCascadeStage[Stages.Length];
            for (int i = 0; i < newStages.Length; i++)
                newStages[i] = (HaarCascadeStage)Stages[i].Clone();

            HaarCascade r = new HaarCascade(Width, Height);
            r.HasTiltedFeatures = this.HasTiltedFeatures;
            r.Stages = newStages;

            return r;
        }
 /// <summary>
 ///   Constructs a new classifier.
 /// </summary>
 public HaarClassifier(HaarCascade cascade)
 {
     this.cascade = cascade;
 }