public void DetectFaces()
 {
     try
     {
         Update_DetectorImageScale_DividedBy_CameraViewImageScale();
         var scale = DetectorImageScale_DividedBy_CameraViewImageScale;
         var detectorImageWidth  = (int)(CameraViewImageWidth * scale);
         var detectorImageHeight = (int)(CameraViewImageHeight * scale);
         if (false)
         {
             Debug.WriteLine("DetectorImageWidth: " + detectorImageWidth);
             Debug.WriteLine("DetectorImageHeight: " + detectorImageHeight);
         }
         if (ApplicationCommonSettings.IsDeveloperRelease)
         {
             DetectionElapsedStopwatch.Reset(); DetectionElapsedStopwatch.Start();
         }
         DlibArray2dUcharImage.ResizeImage(detectorImageWidth, detectorImageHeight);
         DetectedFaceRectsInCameraViewImage = DlibHogSvm.DetectFaces(DlibArray2dUcharImage, DlibHogSvmThreshold)
                                              .Select(e => new System.Drawing.Rectangle((int)(e.X / scale), (int)(e.Y / scale), (int)(e.Width / scale), (int)(e.Height / scale)))
                                              .ToList();
         if (ApplicationCommonSettings.IsDeveloperRelease)
         {
             DetectionElapsedMilliseconds = (int)DetectionElapsedStopwatch.ElapsedMilliseconds;
         }
     }
     catch (Exception ex)
     {
         if (ApplicationCommonSettings.IsDebugging)
         {
             Debugger.Break();
         }
         Console.WriteLine(ex.Message);
     }
 }
예제 #2
0
        public void DetectFaces(OpenCvSharp.Mat inputColorImage, double threshold)
        {
            if (IsEnabled == false)
            {
                return;
            }
            Trace.Assert(inputColorImage != null);
            Elapsed.Restart();

            Image.SetBitmap(inputColorImage.ToBitmap());
            DetectedFaceRects = DlibHogSvm.DetectFaces(Image, threshold)
                                .Select(e => new OpenCvSharp.Rect(e.X, e.Y, e.Width, e.Height));

            Elapsed.Stop();
            var fps = (1000.0 / (double)Elapsed.ElapsedMilliseconds);

            FpsFiltered = 0.7 * FpsFiltered + 0.3 * fps;
        }