private Rect[] GetFacesInImage(Mat image) { Rect[] faces; lock (cascadeLock) { faces = Cascade.DetectMultiScale(image); } return(faces); }
//Face detection private void DetectAndSaveImg(Mat image) { //Image to gray scale using (var grayImage = new Mat()) { Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY); //Flattening the histogram Cv2.EqualizeHist(grayImage, grayImage); //Face recognition, Small faces excluded var mats = Cascade.DetectMultiScale(grayImage, 1.1, 3, 0, new Size(80, 80)) //Make rects focusing on facial parts .Select(rect => new Rect(rect.X, rect.Y, rect.Width, rect.Height)) //Imaged cut out .Select(image.Clone) //Listing .ToList(); SaveImg(mats); } }