Как определить лицо, когда человек носит хирургическую маску при использовании Эмгу? - PullRequest
0 голосов
/ 01 апреля 2020

Я использую Emgu версии 2.2.1.1150, и в настоящее время он может обнаружить обнаженное лицо и глаза. Но когда я ношу маску, она не обнаруживает лица.

Я использую haarcascade_frontalface_default. xml для обнаружения лица и haarcascade_eye. xml для обнаружения глаза.

Есть ли способ определить лицо или человека в маске, как на картинке выше? Мой текущий код для обнаружения лица и глаз, как показано ниже: -

currentFrame = capture.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
gray = currentFrame.Convert<Gray, Byte>();
MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(face, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new System.Drawing.Size(20, 20));
foreach (MCvAvgComp f in facesDetected[0])
{
    currentFrame.Copy(f.rect).Convert<Gray, byte>().Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
    currentFrame.Draw(f.rect, new Bgr(System.Drawing.Color.Red), 1);

    gray.ROI = f.rect;
    MCvAvgComp[][] eyesDetected = gray.DetectHaarCascade(eye, 1.1, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new System.Drawing.Size(20, 20));
    gray.ROI = System.Drawing.Rectangle.Empty;

    foreach (MCvAvgComp ey in eyesDetected[0])
    {
        System.Drawing.Rectangle eyeRect = ey.rect;
        eyeRect.Offset(f.rect.X, f.rect.Y);
        currentFrame.Draw(eyeRect, new Bgr(System.Drawing.Color.Blue), 1);
    }
}
imageFrameGrabber.Source = currentFrame.ToBitmapSource();
...