/// <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. }