Exemplo n.º 1
0
        /// <summary>
        ///   Detects the presence of an object in a given window.
        /// </summary>
        public bool Compute(FastBitmap image, Rectangle rectangle)
        {
            int x = rectangle.X;
            int y = rectangle.Y;
            int w = rectangle.Width;
            int h = rectangle.Height;

            double mean = image.GetSum(x, y, w, h) * invArea;
            double var = image.GetSum2(x, y, w, h) * invArea - (mean * mean);

            double sdev = (var >= 0) ? Math.Sqrt(var) : 1;

            // For each classification stage in the cascade
            foreach (HaarCascadeStage stage in cascade.Stages)
            {
                // Check if the stage has rejected the image
                if (stage.Classify(image, x, y, sdev) == false)
                {
                    return false; // The image has been rejected.
                }
            }

            // If the object has gone all stages and has not
            // been rejected, the object has been detected.
            return true; // The image has been detected.
        }