/// <summary> /// Writes the specified cascade. /// </summary> /// <param name="cascade">The cascade to write.</param> /// <param name="className">The name for the generated class.</param> /// public void Write(FacialRecog.ViolaJones.Detection.HaarCascade.HaarCascade cascade, string className) { for (int i = 0; i < cascade.Stages.Length; i++) { for (int j = 0; j < cascade.Stages[i].Trees.Length; j++) { if (cascade.Stages[i].Trees[j].Length != 1) { throw new ArgumentException("Only cascades with single node trees are currently supported."); } } } writer.WriteLine("// This file has been automatically transcribed by the"); writer.WriteLine("//"); writer.WriteLine("// Accord Vision Library"); writer.WriteLine("// The Accord.NET Framework"); writer.WriteLine("// http://accord.googlecode.com"); writer.WriteLine("//"); writer.WriteLine(); writer.WriteLine("namespace HaarCascades"); writer.WriteLine("{"); writer.WriteLine(" using System.Collections.Generic;"); writer.WriteLine(); writer.WriteLine(" /// <summary>"); writer.WriteLine(" /// Automatically generated haar-cascade definition"); writer.WriteLine(" /// to use with the Accord.NET Framework object detectors."); writer.WriteLine(" /// </summary>"); writer.WriteLine(" /// "); writer.WriteLine(" public class {0} : Accord.Vision.Detection.HaarCascade", className); writer.WriteLine(" {"); writer.WriteLine(); writer.WriteLine(" /// <summary>"); writer.WriteLine(" /// Automatically generated transcription"); writer.WriteLine(" /// </summary>"); writer.WriteLine(" public {0}()", className); writer.WriteLine(" : base({0}, {1})", cascade.Width, cascade.Height); writer.WriteLine(" {"); writer.WriteLine(" List<HaarCascadeStage> stages = new List<HaarCascadeStage>();"); writer.WriteLine(" List<HaarFeatureNode[]> nodes;"); writer.WriteLine(" HaarCascadeStage stage;"); writer.WriteLine(); if (cascade.HasTiltedFeatures) { writer.WriteLine(" HasTiltedFeatures = true;"); writer.WriteLine(); } // Write cascade stages for (int i = 0; i < cascade.Stages.Length; i++) { writeStage(i, cascade.Stages[i]); } writer.WriteLine(); writer.WriteLine(" Stages = stages.ToArray();"); writer.WriteLine(" }"); writer.WriteLine(" }"); writer.WriteLine("}"); }
/// <summary> /// Constructs a new classifier. /// </summary> /// public HaarClassifier(FacialRecog.ViolaJones.Detection.HaarCascade.HaarCascade cascade) { this.cascade = cascade; }