示例#1
0
        public void Init(PictureBox pb)
        {
            FilterInfoCollection VideoCaptuerDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            VideoCaptureDevice   FinalVideoSource    = new VideoCaptureDevice(VideoCaptuerDevices[0].MonikerString);

            FinalVideoSource.NewFrame += new NewFrameEventHandler((sender, eventArgs) =>
            {
                Bitmap image = (Bitmap)eventArgs.Frame.Clone();

                FaceHaarCascade cascade     = new FaceHaarCascade();
                HaarObjectDetector detector = new HaarObjectDetector(cascade, 80);

                detector.UseParallelProcessing = true;

                Rectangle[] faces = detector.ProcessFrame(image);

                Graphics g = Graphics.FromImage(image);
                foreach (var face in faces)
                {
                    Pen p = new Pen(Color.Red, 10f);
                    g.DrawRectangle(p, face);
                }
                g.Dispose();

                pb.Image = image;
            });

            FinalVideoSource.DesiredFrameRate = 1;
            FinalVideoSource.DesiredFrameSize = new Size(1, 500);
            FinalVideoSource.Start();
        }
示例#2
0
        public static Rectangle detectFace(Bitmap bitmap)
        {
            var rectangle = new Rectangle();
            var cascade   = new FaceHaarCascade();
            var detector  = new HaarObjectDetector(cascade, 600);

            detector.SearchMode            = ObjectDetectorSearchMode.Default;
            detector.ScalingFactor         = 1.5F;
            detector.ScalingMode           = ObjectDetectorScalingMode.SmallerToGreater;
            detector.UseParallelProcessing = true;
            detector.Suppression           = 3;

            var faceObjects  = detector.ProcessFrame(bitmap);
            var possbleFaces = new List <Rectangle>();

            foreach (var face in faceObjects)
            {
                if (face.Width > 100 && face.Height > 100)
                {
                    possbleFaces.Add(face);
                }
            }
            if (possbleFaces.Count > 0)
            {
                int x      = possbleFaces.Sum((r) => r.X) / possbleFaces.Count;
                int y      = possbleFaces.Sum((r) => r.Y) / possbleFaces.Count;
                int width  = possbleFaces.Sum((r) => r.Width) / possbleFaces.Count;
                int height = possbleFaces.Sum((r) => r.Width) / possbleFaces.Count;
                rectangle = new Rectangle(x, y, width, height);
            }
            return(rectangle);
        }
示例#3
0
        public void ProcessFrame3()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                15, ObjectDetectorSearchMode.NoOverlap);

            Bitmap bmp = Properties.Resources.three;

            target.ProcessFrame(bmp);

            Assert.AreEqual(3, target.DetectedObjects.Length);
            Assert.AreEqual(180, target.DetectedObjects[0].X);
            Assert.AreEqual(275, target.DetectedObjects[0].Y);
            Assert.AreEqual(41, target.DetectedObjects[0].Width);
            Assert.AreEqual(41, target.DetectedObjects[0].Height);

            Assert.AreEqual(168, target.DetectedObjects[1].X);
            Assert.AreEqual(144, target.DetectedObjects[1].Y);
            Assert.AreEqual(49, target.DetectedObjects[1].Width);
            Assert.AreEqual(49, target.DetectedObjects[1].Height);

            Assert.AreEqual(392, target.DetectedObjects[2].X);
            Assert.AreEqual(133, target.DetectedObjects[2].Y);
            Assert.AreEqual(59, target.DetectedObjects[2].Width);
            Assert.AreEqual(59, target.DetectedObjects[2].Height);


            target = new HaarObjectDetector(cascade,
                                            15, ObjectDetectorSearchMode.Single);

            target.ProcessFrame(bmp);

            Assert.AreEqual(1, target.DetectedObjects.Length);
        }
示例#4
0
        public void MaxSizeTest()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                50, ObjectDetectorSearchMode.Default);

            Bitmap bmp = Properties.Resources.lena_color;

            Rectangle[] result;

            target.MaxSize = new Size(10, 60);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(0, result.Length);

            target.MaxSize = new Size(60, 60);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(1, result.Length);
            foreach (var r in result)
            {
                Assert.IsTrue(r.Width <= target.MaxSize.Width);
                Assert.IsTrue(r.Height <= target.MaxSize.Height);
            }

            target.MaxSize = new Size(80, 80);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(2, result.Length);
            foreach (var r in result)
            {
                Assert.IsTrue(r.Width <= target.MaxSize.Width);
                Assert.IsTrue(r.Height <= target.MaxSize.Height);
            }
        }
示例#5
0
        public void ProcessFrame2()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                30, ObjectDetectorSearchMode.NoOverlap);

            Bitmap bmp = Properties.Resources.lena_gray;

            target.ProcessFrame(bmp);

            Assert.AreEqual(1, target.DetectedObjects.Length);
            Assert.AreEqual(255, target.DetectedObjects[0].X);
            Assert.AreEqual(225, target.DetectedObjects[0].Y);
            Assert.AreEqual(123, target.DetectedObjects[0].Width);
            Assert.AreEqual(123, target.DetectedObjects[0].Height);


            target = new HaarObjectDetector(cascade,
                                            30, ObjectDetectorSearchMode.Default);

            target.ProcessFrame(bmp);

            Assert.AreEqual(6, target.DetectedObjects.Length);
            Assert.AreEqual(255, target.DetectedObjects[0].X);
            Assert.AreEqual(225, target.DetectedObjects[0].Y);
            Assert.AreEqual(123, target.DetectedObjects[0].Width);
            Assert.AreEqual(123, target.DetectedObjects[0].Height);
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_Load(object sender, EventArgs e)
        {
            watch.Stop();

            #region extracting icon from application to this form window
            Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
            #endregion

            #region Load default Mask Image
            if (File.Exists("mask.png"))
            {
                mask = LoadMask("mask.png");
            }
            else
            {
                mask = Icon.ToBitmap();
            }
            erase = new Bitmap(mask.Width, mask.Height, PixelFormat.Format32bppArgb);
            #endregion

            #region Add file(s) from command line args
            string[] flist = Environment.GetCommandLineArgs();
            lvFiles.Items.Clear();
            foreach (string f in flist)
            {
                if (PhotoExts.Contains(Path.GetExtension(f), StringComparer.CurrentCultureIgnoreCase))
                {
                    if (lvFiles.Items.Count == 0 || lvFiles.FindItemWithText(f, true, 0) == null)
                    {
                        ListViewItem fItem = new ListViewItem(new string[] { Path.GetFileName(f), f });
                        lvFiles.Items.Add(fItem);
                    }
                }
            }
            #endregion

            picPreview.SizeMode = PictureBoxSizeMode.Zoom;
            picPreview.Image    = photo;

            picMask.SizeMode = PictureBoxSizeMode.Zoom;
            picMask.Image    = mask;

            cbMode.DataSource    = Enum.GetValues(typeof(ObjectDetectorSearchMode));
            cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode));

            cbMode.SelectedItem    = ObjectDetectorSearchMode.NoOverlap;
            cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater;

            SearchMode  = ObjectDetectorSearchMode.NoOverlap;
            ScalingMode = ObjectDetectorScalingMode.SmallerToGreater;

            OutSize  = (int)numOutSize.Value;
            faceSize = (int)numFaceSize.Value;

            GrayFirst = chkGrayDetect.Checked;

            HaarCascade cascade = new FaceHaarCascade();
            detector = new HaarObjectDetector(cascade);
        }
        public void ParseTest3()
        {
            HaarCascade cascade = new FaceHaarCascade();

            Assert.AreEqual(22, cascade.Stages.Length);
            Assert.AreEqual(3, cascade.Stages[0].Trees.Length);
            Assert.AreEqual(1, cascade.Stages[0].Trees[0].Length);
        }
示例#8
0
        static void Main(string[] args)
        {
            ////ApplyBiTonal
            //Bitmap b = (Bitmap)Image.FromFile("test.png");
            //Processor.ApplyBiTonal(ref b, (byte.MaxValue * 3) / 2, System.Drawing.Color.Red, System.Drawing.Color.White);
            //b.Save("result.png");


            //WebClient wc = new WebClient();
            //byte[] bytes = wc.DownloadData("https://lpportalvhds5rnqyvf495z0.blob.core.windows.net/imagger/408fcdc5-8e91-4dc9-ada8-87287c8cf77f-orinal.jpeg");
            //MemoryStream ms = new MemoryStream(bytes);
            //Bitmap imageBitmap = new Bitmap(ms);
            //Processor.ApplyBrightness(ref imageBitmap, 100);
            ////Processor.ApplyBiTonal(ref imageBitmap, (byte.MaxValue * 3) / 2, System.Drawing.Color.Red, System.Drawing.Color.White);
            //imageBitmap.Save("result.png");


            //WebClient wc = new WebClient();
            //byte[] bytes = wc.DownloadData("https://lpportalvhds5rnqyvf495z0.blob.core.windows.net/imagger/157bed84-5f10-4f43-a5e5-7f0d146e3452-orinal.jpeg");
            //MemoryStream ms = new MemoryStream(bytes);
            //Bitmap imageBitmap = new Bitmap(ms);
            //Processor.ApplyRandomJitter(ref imageBitmap, 20); //, System.Drawing.Color.Red, System.Drawing.Color.White);
            //imageBitmap.Save("result.png");

            //Bitmap br = (Bitmap)Image.FromFile("test.png");
            //Processor.ApplyBrightness(ref br, 100);
            //br.Save("result-br.png");



            #region Detect faces

            WebClient    wc      = new WebClient();
            byte[]       bytes   = wc.DownloadData("https://scontent-fra3-1.xx.fbcdn.net/v/t1.0-1/c0.46.200.200/1724176_10151691353752537_1722497807_n.jpg?oh=19d89af364674bd704cd38613135b4e1&oe=583097F3");
            MemoryStream ms      = new MemoryStream(bytes);
            Bitmap       picture = new Bitmap(ms);

            HaarObjectDetector detector;
            HaarCascade        cascade = new FaceHaarCascade();
            detector = new HaarObjectDetector(cascade, 30);

            detector.SearchMode            = ObjectDetectorSearchMode.NoOverlap;
            detector.ScalingMode           = ObjectDetectorScalingMode.GreaterToSmaller;
            detector.ScalingFactor         = 1.5f;
            detector.UseParallelProcessing = true;

            Rectangle[] objects = detector.ProcessFrame(picture);
            // RandomJitter.ApplyRandomJitterOnRectangulars(ref picture, 20, objects);
            //   RandomJitter.ApplyRandomJitterOnRectangulars2(ref picture, 20, objects);

            RandomJitter.ApplyAddNoise(ref picture, objects);
            picture.Save("result.png");

            //  var p = RandomJitter.ApplyColorMatrix(picture, objects);
            //p.Save("result.png");

            #endregion
        }
示例#9
0
        // Constructor
        public MainForm()
        {
            InitializeComponent();

            HaarCascade cascade = new FaceHaarCascade();

            detector = new HaarObjectDetector(cascade, 25, ObjectDetectorSearchMode.Single, 1.2f,
                                              ObjectDetectorScalingMode.GreaterToSmaller);
        }
        public void ParseTest()
        {
            string      fileName = Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "haarcascade_frontalface_alt.xml");
            HaarCascade cascade1 = HaarCascade.FromXml(new StreamReader(fileName));

            Assert.AreEqual(22, cascade1.Stages.Length);
            Assert.AreEqual(3, cascade1.Stages[0].Trees.Length);
            Assert.AreEqual(1, cascade1.Stages[0].Trees[0].Length);

            Assert.AreEqual(false, cascade1.HasTiltedFeatures);

            // Load the hard coded version of the classifier
            HaarCascade cascade2 = new FaceHaarCascade();

            Assert.AreEqual(cascade1.Stages.Length, cascade2.Stages.Length);
            Assert.AreEqual(cascade1.Height, cascade2.Height);
            Assert.AreEqual(cascade1.Width, cascade2.Width);


            for (int i = 0; i < 3; i++)
            {
                HaarCascadeStage stage1 = cascade1.Stages[i];
                HaarCascadeStage stage2 = cascade2.Stages[i];

                //Assert.AreEqual(stage1.NextIndex, stage2.NextIndex);
                //Assert.AreEqual(stage1.ParentIndex, stage2.ParentIndex);

                Assert.AreEqual(stage1.Threshold, stage2.Threshold);

                Assert.AreEqual(stage1.Trees.Length, stage2.Trees.Length);

                for (int j = 0; j < stage1.Trees.Length && j < stage2.Trees.Length; j++)
                {
                    HaarFeatureNode[] tree1 = stage1.Trees[j];
                    HaarFeatureNode[] tree2 = stage2.Trees[j];

                    Assert.AreEqual(tree1.Length, tree2.Length);

                    for (int k = 0; k < tree1.Length; k++)
                    {
                        HaarFeatureNode node1 = tree1[k];
                        HaarFeatureNode node2 = tree2[k];

                        Assert.AreEqual(node1.LeftNodeIndex, node2.LeftNodeIndex);
                        Assert.AreEqual(node1.RightNodeIndex, node2.RightNodeIndex);

                        Assert.AreEqual(node1.LeftValue, node2.LeftValue);
                        Assert.AreEqual(node1.RightValue, node2.RightValue);

                        Assert.AreEqual(node1.Feature.Tilted, node2.Feature.Tilted);

                        Assert.AreEqual(node1.Threshold, node2.Threshold, 0.000000001);
                    }
                }
            }
        }
示例#11
0
        public FaceDetector()
        {
            HaarCascade cascade = new FaceHaarCascade();

            detector = new HaarObjectDetector(cascade, 30);

            detector.SearchMode            = ObjectDetectorSearchMode.Default;
            detector.ScalingMode           = ObjectDetectorScalingMode.GreaterToSmaller;
            detector.ScalingFactor         = 1.1f;
            detector.UseParallelProcessing = true;
            detector.Suppression           = 2;
        }
示例#12
0
        public void ProcessFrame()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                50, ObjectDetectorSearchMode.NoOverlap);

            Bitmap bmp = Properties.Resources.lena_color;

            target.ProcessFrame(bmp);

            Assert.AreEqual(1, target.DetectedObjects.Length);
            Assert.AreEqual(126, target.DetectedObjects[0].X);
            Assert.AreEqual(112, target.DetectedObjects[0].Y);
            Assert.AreEqual(59, target.DetectedObjects[0].Width);
            Assert.AreEqual(59, target.DetectedObjects[0].Height);
        }
示例#13
0
        public ImageController(PictureBox image)
        {
            this.image = image;

            /*
             * cbMode.DataSource = Enum.GetValues(typeof(ObjectDetectorSearchMode));
             * cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode));
             *
             * cbMode.SelectedItem = ObjectDetectorSearchMode.NoOverlap;
             * cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater;
             */

            //toolStripStatusLabel1.Text = "Please select the detector options and click Detect to begin.";

            HaarCascade cascade = new FaceHaarCascade();

            detector = new HaarObjectDetector(cascade, 30);
        }
        public MainForm()
        {
            InitializeComponent();

            pictureBox1.Image = picture;

            cbMode.DataSource    = Enum.GetValues(typeof(ObjectDetectorSearchMode));
            cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode));

            cbMode.SelectedItem    = ObjectDetectorSearchMode.NoOverlap;
            cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater;

            toolStripStatusLabel1.Text = "Please select the detector options and click Detect to begin.";

            HaarCascade cascade = new FaceHaarCascade();

            detector = new HaarObjectDetector(cascade, 30);
        }
示例#15
0
        public void CloneTest()
        {
            HaarCascade expected = new FaceHaarCascade();
            HaarCascade actual   = (HaarCascade)expected.Clone();

            Assert.AreNotEqual(expected, actual);

            Assert.AreEqual(expected.HasTiltedFeatures, actual.HasTiltedFeatures);
            Assert.AreEqual(expected.Height, actual.Height);
            Assert.AreEqual(expected.Width, actual.Width);

            Assert.AreNotEqual(expected.Stages, actual.Stages);
            Assert.AreEqual(expected.Stages.Length, actual.Stages.Length);

            for (int i = 0; i < expected.Stages.Length; i++)
            {
                equals(expected.Stages[i], actual.Stages[i]);
            }
        }
        public Tracking_face()
        {
            InitializeComponent();

            try
            {
                // enumerate video devices
                videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

                if (videoDevices.Count == 0)
                {
                    throw new ApplicationException();
                }

                // add all devices to combo
                foreach (FilterInfo device in videoDevices)
                {
                    devicesCombo.Items.Add(device.Name);
                }
                HaarCascade cascade = new FaceHaarCascade();
                detector = new HaarObjectDetector(cascade,
                                                  25, ObjectDetectorSearchMode.Single, 1.2f,
                                                  ObjectDetectorScalingMode.GreaterToSmaller);
            }
            catch (ApplicationException)
            {
                devicesCombo.Items.Add("No local capture devices");
                devicesCombo.Enabled = false;
            }

            devicesCombo.SelectedIndex = 1;

            // create video source
            VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[devicesCombo.SelectedIndex].MonikerString);

            // set frame size
            videoSource.VideoResolution = selectResolution(videoSource);

            // open it
            OpenVideoSource(videoSource);

            detecting = true;
        }
示例#17
0
        public static string DetectFace(string path)
        {
            GetPicture(path);
            // Process frame to detect objects
            HaarCascade        cascade  = new FaceHaarCascade();
            HaarObjectDetector detector = new HaarObjectDetector(cascade, 30);

            detector.SearchMode    = (ObjectDetectorSearchMode)cbMode;
            detector.ScalingMode   = (ObjectDetectorScalingMode)cbScaling;
            detector.ScalingFactor = 1.5f;

            Stopwatch sw = Stopwatch.StartNew();

            Rectangle[] objects = detector.ProcessFrame(picture);

            sw.Stop();

            if (objects.Length > 0)
            {
                Console.WriteLine("here");
                RectanglesMarker marker = new RectanglesMarker(objects, Color.Fuchsia);
                picture = marker.Apply(picture);
            }
            if (picture != null)
            {
                Console.WriteLine("trying to print picture");

                /*ImageCodecInfo myici = ImageCodecInfo.GetImageEncoders();
                 * int numCodecs = myici.GetLength(0);
                 * Encoder myEncoder = Encoder.Quality;
                 * EncoderParameters param = new EncoderParameters(1);
                 * EncoderParameter param1 = new EncoderParameter(myEncoder, 25L);
                 *
                 * picture.Save(@"output.jpg", myici, param);
                 */

                picture.Save("file.png", ImageFormat.Png);;
            }
            return(path);
        }
示例#18
0
        public static void Main(string[] args)
        {
            var picture = Resource.lena_color;

            HaarCascade cascade  = new FaceHaarCascade();
            var         detector = new HaarObjectDetector(cascade, 30);

            //detector.SearchMode = ObjectDetectorSearchMode.Average;
            //detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller;
            //detector.ScalingFactor = 1.5f;
            //detector.UseParallelProcessing = false;
            //detector.Suppression = 2;

            Rectangle[] objects = detector.ProcessFrame(picture);

            if (objects.Length > 0)
            {
                RectanglesMarker marker = new RectanglesMarker(objects, Color.Fuchsia);
                var markedup            = marker.Apply(picture);
                markedup.Save($"{basedir}{sep}{sep}markedup.jpg");
            }
        }
示例#19
0
        //+mainWinForm(): Constructor, gets parts initialized
        public mainWinForm()
        {
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            data = new FileHandler();
            InitializeComponent();
            this.bntStart.Enabled          = false;
            this.bntStop.Enabled           = false;
            this.recordBtn.Enabled         = false;
            this.capture.Enabled           = false;
            this.send.Enabled              = false;
            this.bntVideoSource.Enabled    = false;
            this.userInput.Enabled         = false;
            this.mic.SelectedIndexChanged += mic_SelectedIndexChanged;

            Log("[Software Started]");
            Log("[Components initialized]");

            this.cascade  = new FaceHaarCascade();
            this.detector = new HaarObjectDetector(cascade, minSize: 50, searchMode: ObjectDetectorSearchMode.NoOverlap);

            Log(">Please choose an audio source.");
        }
示例#20
0
        public void MinSizeTest()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                50, ObjectDetectorSearchMode.Default);

            Bitmap bmp = Accord.Imaging.Image.Clone(Resources.lena_color);

            Rectangle[] result;

            target.MinSize = new Size(10, 60);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(3, result.Length);
            foreach (var r in result)
            {
                Assert.IsTrue(r.Width >= target.MinSize.Width);
                Assert.IsTrue(r.Height >= target.MinSize.Height);
            }


            target.MinSize = new Size(85, 85);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(2, result.Length);
            foreach (var r in result)
            {
                Assert.IsTrue(r.Width >= target.MinSize.Width);
                Assert.IsTrue(r.Height >= target.MinSize.Height);
            }

            target.MinSize = new Size(1, 1);
            result         = target.ProcessFrame(bmp);
            Assert.AreEqual(4, result.Length);
            foreach (var r in result)
            {
                Assert.IsTrue(r.Width >= target.MinSize.Width);
                Assert.IsTrue(r.Height >= target.MinSize.Height);
            }
        }
示例#21
0
        public void ProcessFrame3()
        {
            HaarCascade        cascade = new FaceHaarCascade();
            HaarObjectDetector target  = new HaarObjectDetector(cascade,
                                                                15, ObjectDetectorSearchMode.NoOverlap);

            Bitmap bmp = Accord.Imaging.Image.Clone(Resources.three);

            target.ProcessFrame(bmp);

            Assert.AreEqual(2, target.DetectedObjects.Length);

            int i = 0;

            /* Assert.AreEqual(180, target.DetectedObjects[0].X);
             * Assert.AreEqual(275, target.DetectedObjects[0].Y);
             * Assert.AreEqual(41, target.DetectedObjects[0].Width);
             * Assert.AreEqual(41, target.DetectedObjects[0].Height);
             */
            Assert.AreEqual(168, target.DetectedObjects[i].X);
            Assert.AreEqual(144, target.DetectedObjects[i].Y);
            Assert.AreEqual(49, target.DetectedObjects[i].Width);
            Assert.AreEqual(49, target.DetectedObjects[i].Height);

            i++;
            Assert.AreEqual(392, target.DetectedObjects[i].X);
            Assert.AreEqual(133, target.DetectedObjects[i].Y);
            Assert.AreEqual(59, target.DetectedObjects[i].Width);
            Assert.AreEqual(59, target.DetectedObjects[i].Height);


            target = new HaarObjectDetector(cascade,
                                            15, ObjectDetectorSearchMode.Single);

            target.ProcessFrame(bmp);

            Assert.AreEqual(1, target.DetectedObjects.Length);
        }
示例#22
0
        private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            // Wait for the client to get setup
            await Task.Delay(5000);

            // Setup Socket Client
            Client = new TcpClient();
            Client.Connect(IPAddress.Parse("10.10.10.100"), 1911);
            ClientStream = Client.GetStream();

            // enumerate video devices
            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            // create video source
            videoSource = new VideoCaptureDevice(videoDevices[1].MonikerString);
            videoSource.SnapshotResolution = videoSource.VideoCapabilities[7];
            // set NewFrame event handler
            videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);

            // Setup Face Detection
            Cascade             = new FaceHaarCascade();
            Detector            = new HaarObjectDetector(Cascade, 30);
            Detector.SearchMode = ObjectDetectorSearchMode.Average;
            //Detector.ScalingFactor = 1f;
            Detector.ScalingMode           = ObjectDetectorScalingMode.GreaterToSmaller;
            Detector.UseParallelProcessing = true;
            Detector.Suppression           = 3;

            // Setup Tracking Data
            CameraVector.X = 90;
            CameraVector.Y = 90;
            //ClientStream.Write(Encoding.UTF8.GetBytes("090,090"), 0, 7);

            //await Task.Delay(3000);

            // start the video source
            videoSource.Start();
        }
        static void Main(string[] args)
        {
            String outputDir = "H:\\Temp\\";

            UserCredential     credential;
            FaceHaarCascade    cascade  = new FaceHaarCascade();
            HaarObjectDetector detector = new HaarObjectDetector(cascade);

            detector.SearchMode            = ObjectDetectorSearchMode.Average;
            detector.ScalingFactor         = 1.5F;
            detector.ScalingMode           = ObjectDetectorScalingMode.GreaterToSmaller;;
            detector.UseParallelProcessing = true;
            detector.Suppression           = 3;

            using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart.json");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Gmail API service.
            var service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            // Define parameters of request.
            UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me");
            request.Q = "has:attachment";

            // List labels.
            IList <Message> messages = request.Execute().Messages;

            Console.WriteLine("Messages:");
            if (messages != null && messages.Count > 0)
            {
                foreach (var messageItem in messages)
                {
                    //Console.WriteLine("{0}", messageItem.Id);
                    Message message = service.Users.Messages.Get("me", messageItem.Id).Execute();
                    Console.WriteLine(message.Payload.MimeType.ToString());
                    IList <MessagePart> parts = message.Payload.Parts;
                    foreach (MessagePart part in parts)
                    {
                        if (!String.IsNullOrEmpty(part.Filename))
                        {
                            String          attId      = part.Body.AttachmentId;
                            MessagePartBody attachPart = service.Users.Messages.Attachments.Get("me", messageItem.Id, attId).Execute();
                            Console.WriteLine(part.Filename);

                            // Converting from RFC 4648 base64 to base64url encoding
                            // see http://en.wikipedia.org/wiki/Base64#Implementations_and_history
                            String attachData = attachPart.Data.Replace('-', '+');
                            attachData = attachData.Replace('_', '/');

                            byte[] data = Convert.FromBase64String(attachData);

                            MemoryStream ms    = new MemoryStream(data);
                            Bitmap       img   = new Bitmap(Image.FromStream(ms));
                            Rectangle[]  rects = detector.ProcessFrame(img);
                            if (rects.Count() > 0)
                            {
                                Console.WriteLine("Face detected!!!!");
                                File.WriteAllBytes(Path.Combine(outputDir, part.Filename), data);
                            }
                        }
                    }
                }
            }
            else
            {
                Console.WriteLine("No messages found.");
            }
            Console.Read();
        }
示例#24
0
 public AccordFaceDetector(Bitmap image1)
 {
     Accord.Vision.Detection.HaarCascade cascade = new FaceHaarCascade();
     _detector = new HaarObjectDetector(cascade, 30);
     image     = image1;
 }
示例#25
0
 public ViolaJonesFaceDetector(Profile profile, params Type[] clients) : base(profile, clients)
 {
     Cascade  = new FaceHaarCascade();
     Detector = new HaarObjectDetector(Cascade, 30);
     Status   = ApiStatus.Initializing;
 }
示例#26
0
        private static void Process(string imagePath)
        {
            try
            {
                var cascade  = new FaceHaarCascade();
                var detector = new HaarObjectDetector(cascade, _varHaarMinSize);

                detector.SearchMode            = (ObjectDetectorSearchMode)_varHaarSearchMode;
                detector.ScalingFactor         = _varHaarScalingFact;
                detector.ScalingMode           = (ObjectDetectorScalingMode)_varHaarScalingMode;
                detector.UseParallelProcessing = _varHaarParallel;
                detector.Suppression           = _varHaarSuppression;

                using (var img = Image.FromFile(imagePath))
                {
                    using (var bmp = new Bitmap(img)) {
                        var sw          = Stopwatch.StartNew();
                        var faceObjects = detector.ProcessFrame(bmp);
                        sw.Stop();

                        LogMessage(string.Format("Detected {0} faces", faceObjects.Length));

                        foreach (var f in faceObjects)
                        {
                            Bitmap bmpImage = new Bitmap(img);
                            bmpImage = bmp.Clone(new Rectangle(f.Location, f.Size), bmpImage.PixelFormat);

                            string outPath = Path.Combine(_varDestFolder, _varDestPrefix + (++numImages).ToString("00000") + "." + _varDestFileType);
                            LogMessage("Output file " + outPath);

                            ImageFormat imageFormat = ImageFormat.Png;
                            switch (_varDestFileType.ToLower())
                            {
                            case "png":
                                imageFormat = ImageFormat.Png;
                                break;

                            case "jpg":
                            case "jpeg":
                                imageFormat = ImageFormat.Jpeg;
                                break;

                            case "bmp":
                                imageFormat = ImageFormat.Bmp;
                                break;
                            }

                            using (var resized = ResizeImage(bmpImage, _varDestSize, _varDestSize))
                            {
                                resized.Save(outPath, imageFormat);
                            }

                            bmpImage.Dispose();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogMessage("Error processing file " + imagePath + "\n" + ex.Message);
            }
        }