Exemplo n.º 1
0
        void RunDetectFace()
        {
            try
            {
                //Read the files as an 8-bit Bgr image
                NSImage nsImage = NSImage.ImageNamed("lena.jpg");
                UMat    image   = nsImage.ToUMat(); //UMat version
                                                    //image = new Mat("lena.jpg", ImreadModes.Color); //CPU version

                long             detectionTime;
                List <Rectangle> faces = new List <Rectangle>();
                List <Rectangle> eyes  = new List <Rectangle>();

                FaceDetection.DetectFace.Detect(
                    image, "haarcascade_frontalface_default.xml", "haarcascade_eye.xml",
                    faces, eyes,
                    out detectionTime);

                foreach (Rectangle face in faces)
                {
                    CvInvoke.Rectangle(image, face, new Bgr(Color.Red).MCvScalar, 2);
                }
                foreach (Rectangle eye in eyes)
                {
                    CvInvoke.Rectangle(image, eye, new Bgr(Color.Blue).MCvScalar, 2);
                }

                mainImageView.Image = image.ToNSImage();
            } catch (Exception e)
            {
                InvokeOnMainThread(() =>
                {
                    messageLabel.StringValue = e.Message;
                    messageLabel.InvalidateIntrinsicContentSize();
                });
            }
        }
Exemplo n.º 2
0
        void RunDetectFace()
        {
            try
            {
                //Read the files as an 8-bit Bgr image
                NSImage          nsImage = NSImage.ImageNamed("lena.jpg");
                UMat             image   = nsImage.ToUMat(); //UMat version
                long             detectionTime;
                List <Rectangle> faces = new List <Rectangle>();
                List <Rectangle> eyes  = new List <Rectangle>();
                using (CascadeClassifier faceCascadeClassifier = new CascadeClassifier("haarcascade_frontalface_default.xml"))
                    using (CascadeClassifier eyeCascadeClassifier = new CascadeClassifier("haarcascade_eye.xml"))
                        FaceDetection.DetectFace.Detect(
                            image, faceCascadeClassifier, eyeCascadeClassifier,
                            faces, eyes,
                            out detectionTime);

                foreach (Rectangle face in faces)
                {
                    CvInvoke.Rectangle(image, face, new MCvScalar(0, 0, 255), 2);
                }
                foreach (Rectangle eye in eyes)
                {
                    CvInvoke.Rectangle(image, eye, new MCvScalar(255, 0, 0), 2);
                }

                mainImageView.Image = image.ToNSImage();
            } catch (Exception e)
            {
                InvokeOnMainThread(() =>
                {
                    messageLabel.StringValue = e.Message;
                    messageLabel.InvalidateIntrinsicContentSize();
                });
            }
        }