예제 #1
0
        void repeat1(PictureBox p, string url, int framenum)
        {
            while (true)
            {
                framenum++;
                WebRequest  requestPic  = WebRequest.Create(url);
                WebResponse responsePic = requestPic.GetResponse();



                if (framenum % 3 == 0)
                {
                    classification s = new classification(p, Image.FromStream(responsePic.GetResponseStream()));

                    lock (this)
                    {
                        Thread.Sleep(3);

                        mynewframe   dm = new mynewframe(loadmyvideo);
                        IAsyncResult m  = dm.BeginInvoke(s, null, null);
                        p.Image = dm.EndInvoke(m);
                    }
                }
                else
                {
                    p.Image = Image.FromStream(responsePic.GetResponseStream());
                }
            }
        }
예제 #2
0
        private Bitmap loadmyvideo(Object s)
        {
            classification n = (classification)s;

            currentFrame = new Image <Bgr, Byte>((Bitmap)n.myimg);
            if (currentFrame != null)
            {
                Image <Gray, byte> Grayframe = currentFrame.Convert <Gray, byte>();//.Flip(Emgu.CV.CvEnum.FLIP.HORIZONTAL);
                var  faces = Grayframe.DetectHaarCascade(Haar, 1.2, 8, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(pictureBox1.Height / 10, pictureBox1.Width / 10))[0];
                var  faces2 = Grayframe.DetectHaarCascade(Haar2, 1.2, 8, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(pictureBox1.Height / 10, pictureBox1.Width / 10))[0];
                var  faces3 = Grayframe.DetectHaarCascade(Haar3, 1.2, 8, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(pictureBox1.Height / 10, pictureBox1.Width / 10))[0];
                bool x = false, y = false;

                foreach (var face in faces)
                {
                    currentFrame.Draw(face.rect, new Bgr(Color.Red), 2);
                    result = currentFrame.Copy(face.rect).Convert <Gray, byte>().Resize(50, 50, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);

                    x = true;
                }
                if (x)
                {
                    String name = "";
                    foreach (MCvAvgComp f in faces)
                    {
                        if (trainingImages.ToArray().Length != 0)
                        {
                            MCvTermCriteria       termCrit   = new MCvTermCriteria(counter, .001);
                            EigenObjectRecognizer recognizer = new EigenObjectRecognizer(trainingImages.ToArray(), labels.ToArray(), 2000, ref termCrit);
                            name = recognizer.Recognize(result);
                            currentFrame.Draw(name, ref font, new Point(f.rect.X - 2, f.rect.Y - 2), new Bgr(Color.GreenYellow));
                            if (name.Equals("unknown"))
                            {
                                player.Play();
                            }
                        }
                    }
                }


                if (!x)
                {
                    foreach (var face in faces2)
                    {
                        currentFrame.Draw(face.rect, new Bgr(Color.Red), 2);
                        result = currentFrame.Copy(face.rect).Convert <Gray, byte>().Resize(50, 50, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);

                        y = true;
                    }
                    if (y)
                    {
                        String name1 = "";
                        foreach (MCvAvgComp f in faces2)
                        {
                            if (trainingImages.ToArray().Length != 0)
                            {
                                MCvTermCriteria       termCrit   = new MCvTermCriteria(counter, .001);
                                EigenObjectRecognizer recognizer = new EigenObjectRecognizer(trainingImages.ToArray(), labels.ToArray(), 2000, ref termCrit);
                                name1 = recognizer.Recognize(result);
                                currentFrame.Draw(name1, ref font, new Point(f.rect.X - 2, f.rect.Y - 2), new Bgr(Color.GreenYellow));
                                if (name1.Equals("unknown"))
                                {
                                    //System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"alarm.wav");
                                    player.Play();
                                }
                            }
                        }
                    }
                    bool z = false;
                    if (!y)
                    {
                        foreach (var face in faces3)
                        {
                            currentFrame.Draw(face.rect, new Bgr(Color.Red), 2);
                            result = currentFrame.Copy(face.rect).Convert <Gray, byte>().Resize(50, 50, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
                            z      = true;
                        }
                    }
                    if (z)
                    {
                        String name = "";
                        foreach (MCvAvgComp f in faces3)
                        {
                            if (trainingImages.ToArray().Length != 0)
                            {
                                MCvTermCriteria       termCrit   = new MCvTermCriteria(counter, .001);
                                EigenObjectRecognizer recognizer = new EigenObjectRecognizer(trainingImages.ToArray(), labels.ToArray(), 2000, ref termCrit);
                                name = recognizer.Recognize(result);
                                currentFrame.Draw(name, ref font, new Point(f.rect.X - 2, f.rect.Y - 2), new Bgr(Color.GreenYellow));
                                if (name.Equals("unknown"))
                                {
                                    //  System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"alarm.wav");
                                    player.Play();
                                }
                            }
                        }
                    }
                }
            }

            return(currentFrame.Bitmap);
        }