示例#1
0
        /// <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 newTrees = new HaarFeatureNode[Trees.Length][];

            for (var i = 0; i < newTrees.Length; i++)
            {
                var tree    = Trees[i];
                var newTree = newTrees[i] =
                    new HaarFeatureNode[tree.Length];

                for (var j = 0; j < newTree.Length; j++)
                {
                    newTree[j] = (HaarFeatureNode)tree[j].Clone();
                }
            }

            var r = new HaarCascadeStage();

            r.NextIndex   = NextIndex;
            r.ParentIndex = ParentIndex;
            r.Threshold   = Threshold;
            r.Trees       = newTrees;

            return(r);
        }
示例#2
0
        private void WriteTrees(HaarCascadeStage stage, int j)
        {
            _writer.Write("            nodes.Add(new[] { ");

            // Assume trees have single node
            WriteFeature(stage.Trees[j][0]);

            _writer.WriteLine(" });");
        }
示例#3
0
        /// <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 newStages = new HaarCascadeStage[Stages.Length];

            for (var i = 0; i < newStages.Length; i++)
            {
                newStages[i] = (HaarCascadeStage)Stages[i].Clone();
            }

            var r = new HaarCascade(Width, Height);

            r.HasTiltedFeatures = HasTiltedFeatures;
            r.Stages            = newStages;

            return(r);
        }
示例#4
0
        private void WriteStage(int i, HaarCascadeStage stage)
        {
            _writer.WriteLine("            #region Stage {0}", i);
            _writer.WriteLine("            stage = new HaarCascadeStage({0}, {1}, {2}); nodes = new List<HaarFeatureNode[]>();",
                              stage.Threshold.ToString("R", NumberFormatInfo.InvariantInfo),
                              stage.ParentIndex, stage.NextIndex);

            // Write stage trees
            for (var j = 0; j < stage.Trees.Length; j++)
            {
                WriteTrees(stage, j);
            }

            _writer.WriteLine("            stage.Trees = nodes.ToArray(); stages.Add(stage);");
            _writer.WriteLine("            #endregion");
            _writer.WriteLine();
        }