Accord.Vision.Detection.HaarCascadeWriter.Write C# (CSharp) Method

Write() public method

Writes the specified cascade.
public Write ( HaarCascade cascade, string className ) : void
cascade HaarCascade The cascade to write.
className string The name for the generated class.
return void
        public void Write(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-framework.net");
            writer.WriteLine("//");
            writer.WriteLine();
            writer.WriteLine("namespace HaarCascades");
            writer.WriteLine("{");
            writer.WriteLine("    using System.CodeDom.Compiler;");
            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("    [GeneratedCode(\"Accord.NET HaarCascadeWriter\", \"2.7\")]");
            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("}");
        }