private CvCascadeClassifierDetectMultiScale ( IntPtr classifier, IntPtr image, IntPtr objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize ) : void | ||
classifier | IntPtr | |
image | IntPtr | |
objects | IntPtr | |
scaleFactor | double | |
minNeighbors | int | |
flags | int | |
minSize | Size | |
maxSize | Size | |
return | void |
/// <summary> /// Finds rectangular regions in the given image that are likely to contain objects the cascade has been trained for and returns those regions as a sequence of rectangles. /// The function scans the image several times at different scales. Each time it considers overlapping regions in the image. /// It may also apply some heuristics to reduce number of analyzed regions, such as Canny prunning. /// After it has proceeded and collected the candidate rectangles (regions that passed the classifier cascade), it groups them and returns a sequence of average rectangles for each large enough group. /// </summary> /// <param name="image">The image where the objects are to be detected from</param> /// <param name="scaleFactor">The factor by which the search window is scaled between the subsequent scans, for example, 1.1 means increasing window by 10%</param> /// <param name="minNeighbors">Minimum number (minus 1) of neighbor rectangles that makes up an object. All the groups of a smaller number of rectangles than min_neighbors-1 are rejected. If min_neighbors is 0, the function does not any grouping at all and returns all the detected candidate rectangles, which may be useful if the user wants to apply a customized grouping procedure</param> /// <param name="minSize">Minimum window size. Use Size.Empty for default, where it is set to the size of samples the classifier has been trained on (~20x20 for face detection)</param> /// <param name="maxSize">Maxumum window size. Use Size.Empty for default, where the parameter will be ignored.</param> /// <returns>The objects detected, one array per channel</returns> public Rectangle[] DetectMultiScale(Image <Gray, Byte> image, double scaleFactor, int minNeighbors, Size minSize, Size maxSize) { using (MemStorage stor = new MemStorage()) { Seq <Rectangle> rectangles = new Seq <Rectangle>(stor); CvInvoke.CvCascadeClassifierDetectMultiScale(_ptr, image, rectangles, scaleFactor, minNeighbors, 0, minSize, maxSize); return(rectangles.ToArray()); } }