コード例 #1
0
 private void DrawName(Image <Bgr, byte> currentFrame, DetectedFace face)
 {
     currentFrame.Draw(face.Label,
                       ref _font,
                       new System.Drawing.Point(face.FaceInfo.rect.X - 2, face.FaceInfo.rect.Y - 2),
                       new Bgr(System.Drawing.Color.LightGreen));
 }
コード例 #2
0
        public DetectedFace DetectFirstFace(Image <Bgr, Byte> frame, string newLabel = null)
        {
            var result        = new DetectedFace();
            var gray          = frame.Convert <Gray, Byte>();
            var facesDetected = gray.DetectHaarCascade(
                _face,
                1.2,
                10,
                HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
                new Size(20, 20));

            gray.Dispose();

            if (!facesDetected[0].Any())
            {
                return(null);
            }

            MCvAvgComp faceInfo = facesDetected[0].First();

            result.FaceInfo = faceInfo;

            var faceImage = frame.Copy(faceInfo.rect)
                            .Convert <Gray, byte>()
                            .Resize(100, 100,
                                    INTER.CV_INTER_CUBIC);

            if (!String.IsNullOrEmpty(newLabel))
            {
                _recognizerProvider.AddNewLabel(newLabel, faceImage);
                _rep.Save(newLabel, faceImage);
                result.Label = newLabel;
                return(result);
            }

            if (_recognizerProvider.HasConfiguredFaces())
            {
                result.Label = _recognizerProvider.GetRecognizer()
                               .Recognize(faceImage);
            }
            else
            {
                result.Label = UnknownLabel;
            }
            faceImage.Dispose();
            return(result);
        }
コード例 #3
0
 private static void DrawFaceSquare(Image <Bgr, byte> currentFrame, DetectedFace face)
 {
     currentFrame.Draw(face.FaceInfo.rect, new Bgr(System.Drawing.Color.Red), 2);
 }