Ejemplo n.º 1
0
        private int OpenCVFaceDetector(string path)
        {
            // uses openCv Library
            OpenCvSharp.CascadeClassifier faceClassifier = new OpenCvSharp.CascadeClassifier(@"./haarcascade/haarcascade_frontalface_alt.xml");

            OpenCvSharp.Mat result;
            Rect[]          faces = new Rect[0];

            using (var src = new OpenCvSharp.Mat(path, OpenCvSharp.ImreadModes.Color))
                using (var gray = new OpenCvSharp.Mat())
                {
                    result = src.Clone();
                    Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);

                    // Detect faces
                    faces = faceClassifier.DetectMultiScale(gray, 1.08, 2, OpenCvSharp.HaarDetectionType.ScaleImage);
                    List <System.Drawing.Rectangle> rfaces = new List <System.Drawing.Rectangle>();
                    foreach (Rect face in faces)
                    {
                        System.Drawing.Rectangle r = new System.Drawing.Rectangle(face.X, face.Y, face.Width, face.Height);
                        this.GetLandmarks(gray, face, rfaces);
                        rfaces.Add(r);
                    }
                    DrawOnImage?.Invoke(rfaces.ToArray(), new System.Drawing.Size(result.Width, result.Height));
                }
            result.Dispose();
            return(faces.Length);
        }
Ejemplo n.º 2
0
        public void SwapImage(Byte[] frame)
        {
            //   CurrentImage = ImageHelpers.BytesToBitmapImage(frame);
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                Bitmap temp = ImageHelpers.BytesToBitmap(frame);

                DrawOnImage?.Invoke(temp);
                BitmapSource bImg = ImageHelpers.ToBitmapImage(temp);
                temp.Dispose();
                if (bImg != null)
                {
                    CurrentImage = bImg;
                }
            }), DispatcherPriority.Render);
        }