Пример #1
0
        private void DetectFace()
        {
            string facePath;

            try
            {
                // get face detect dataset
                facePath = Path.GetFullPath(@"data/haarcascade_frontalface_default.xml");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }


            CascadeClassifier  classifierFace = new CascadeClassifier(facePath);
            Image <Gray, byte> imgGrayCurr    = CurrImageI.Convert <Gray, byte>().Clone();
            Image <Gray, byte> imgGrayNext    = NextImageI.Convert <Gray, byte>().Clone();

            int minWidthCurr  = (int)(CurrImageI.Width * HAAR_MIN_FACE_FACTOR);
            int minHeightCurr = (int)(CurrImageI.Height * HAAR_MIN_FACE_FACTOR);
            int maxWidthCurr  = (int)(CurrImageI.Width * HAAR_MAX_FACE_FACTOR);
            int maxHeightCurr = (int)(CurrImageI.Height * HAAR_MAX_FACE_FACTOR);

            int minWidthNext   = (int)(NextImageI.Width * HAAR_MIN_FACE_FACTOR);
            int minWHeightNext = (int)(NextImageI.Height * HAAR_MIN_FACE_FACTOR);
            int maxWidthNext   = (int)(NextImageI.Width * HAAR_MAX_FACE_FACTOR);
            int maxHeightNext  = (int)(NextImageI.Height * HAAR_MAX_FACE_FACTOR);

            System.Drawing.Size minSizeCurr = new System.Drawing.Size(minWidthCurr, minHeightCurr);
            System.Drawing.Size maxSizeCurr = new System.Drawing.Size(maxWidthCurr, maxHeightCurr);

            System.Drawing.Size minSizeNext = new System.Drawing.Size(minWidthNext, minWHeightNext);
            System.Drawing.Size maxSizeNext = new System.Drawing.Size(maxWidthNext, maxHeightNext);


            // Detect Faces
            facesArrCurr = classifierFace.DetectMultiScale(imgGrayCurr, HAAR_SCALE_FACTOR, HAAR_SCALE_MIN_NEIGHBOURS, minSizeCurr, maxSizeCurr);
            facesArrNext = classifierFace.DetectMultiScale(imgGrayNext, HAAR_SCALE_FACTOR, HAAR_SCALE_MIN_NEIGHBOURS, minSizeNext, maxSizeNext);

            FacesListCurr = facesArrCurr.ToList <Rectangle>();
            FacesListNext = facesArrNext.ToList <Rectangle>();
        }