コード例 #1
0
        public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh = -1)
        {
            if (_IsTrained)
            {
                EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);

                if (ER == null)
                {
                    Eigen_label    = "Tanımsız";
                    Eigen_Distance = 0;
                    return(Eigen_label);
                }
                else
                {
                    Eigen_label    = ER.Label;
                    Eigen_Distance = ER.Distance;
                    if (Eigen_Thresh > -1)
                    {
                        Eigen_threshold = Eigen_Thresh;
                    }
                    if (Eigen_Distance > Eigen_threshold)
                    {
                        return(Eigen_label);
                    }
                    else
                    {
                        return("Tanımsız");
                    }
                }
            }
            else
            {
                return("");
            }
        }
コード例 #2
0
        private void FrameProcedure(object sender, EventArgs e)
        {
            if (camera != null)
            {
                //Paima iš kameros frame ir padaro jį juodai baltą
                currentFrame = camera.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
                grayFrame    = currentFrame.Convert <Gray, Byte>();

                //Detektina veidus frame
                MCvAvgComp[][] facesDetectedNow = grayFrame.DetectHaarCascade(faceHaarCascase, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));
                foreach (MCvAvgComp faceData in facesDetectedNow[0])
                {
                    faceImage = currentFrame.Copy(faceData.rect).Convert <Gray, Byte>().Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
                    currentFrame.Draw(faceData.rect, new Bgr(Color.Green), 3);

                    //Bando detektintus veidus atpažinti
                    if (usersImages.ToArray().Length != 0)
                    {
                        MCvTermCriteria       termCriterias = new MCvTermCriteria(usersImages.Count, 0.001);
                        EigenObjectRecognizer recognizer    = new EigenObjectRecognizer(usersImages.ToArray(), usersIds.ToArray(), 1500, ref termCriterias);
                        EigenObjectRecognizer.RecognitionResult recognizedId = recognizer.Recognize(faceImage);

                        //Jei atpažino
                        if (recognizedId != null)
                        {
                            //currentFrame.Draw(recognizedId.Label, ref font, new Point(faceData.rect.X - 2, faceData.rect.Y - 2), new Bgr(Color.Red)); //Nereikia piesti prie zmogaus jo id, tą padarys messageboxas

                            //Šaukia event'ą FoundRegisteredFace, su kuriuo vėliau dirbs UCLogin
                            OnFoundRegisteredFace(this, new RecognisedPersonEventArgs(recognizedId.Label));
                        }
                    }
                }
                cameraBox.Image = currentFrame.ToBitmap();
            }
        }
コード例 #3
0
        public static RecognizerResult Recognize(string unknownImg)
        {
            RecognizerResult rcgnResult = new RecognizerResult();

            if (recognizer == null)
            {
                return(null);
            }

            // Recognize the image
            Image <Gray, Byte> testImage = new Image <Gray, Byte>(unknownImg);


            float[]  distances = recognizer.GetEigenDistances(testImage);
            string[] labels    = recognizer.Labels;
            int      num       = labels.Count();

            for (int i = 0; i < num; i++)
            {
                rcgnResult.Distances.Add(labels[i], distances[i]);
            }

            EigenObjectRecognizer.RecognitionResult result = recognizer.Recognize(testImage);

            if (result != null)
            {
                rcgnResult.Distance = result.Distance;
                rcgnResult.Label    = result.Label;
            }
            rcgnResult.FileName = Path.GetFullPath(unknownImg);

            return(rcgnResult);
        }
コード例 #4
0
 public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh = -1)
 {
     if (_IsTrained)
     {
         EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);
         //handle if recognizer.EigenDistanceThreshold is set as a null will be returned
         //NOTE: This is still not working correctley
         if (ER == null)
         {
             Eigen_label    = "Tanımsız";
             Eigen_Distance = 0;
             return(Eigen_label);
         }
         else
         {
             try
             {
                 OGRENCI ogr = new OGRENCI();
                 ogr.OGRENCI_NO = ER.Label;
                 Eigen_label    = Veritabani.OGRENCI_GETIR(ogr)[0].AD + Veritabani.OGRENCI_GETIR(ogr)[0].SOYAD;
                 Eigen_Distance = ER.Distance;
                 if (Eigen_Thresh > -1)
                 {
                     Eigen_threshold = Eigen_Thresh;
                 }
                 if (Eigen_Distance > Eigen_threshold)
                 {
                     return(Eigen_label);
                 }
                 else
                 {
                     return("Tanımsız");
                 }
             }
             catch (Exception)
             {
                 return("Tanımsız");
             }
         }
     }
     else
     {
         return("");
     }
 }
コード例 #5
0
        public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh = -1)
        {
            try
            {
                if (_IsTrained)
                {
                    Set_Eigen_Threshold = recognizeTreshold;
                    EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);

                    if (ER == null)
                    {
                        Eigen_label    = "UnknownNull";
                        Eigen_Distance = 0;
                        return(Eigen_label + " " + Eigen_Distance.ToString());
                    }
                    else
                    {
                        Eigen_label    = ER.Label;
                        Eigen_Distance = ER.Distance;


                        if (Eigen_Distance < recognizeTreshold)
                        {
                            return(Eigen_label + " " + Eigen_Distance.ToString());
                        }
                        //
                        else
                        {
                            return("UnknownFace" + " " + Eigen_Distance.ToString());
                        }
                    }
                }
                else
                {
                    return("");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return("");
            }
        }
コード例 #6
0
 /// <summary>
 /// Recognise a Grayscale Image using the trained Eigen Recogniser
 /// </summary>
 /// <param name="Input_image"></param>
 /// <returns></returns>
 public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh = -1)
 //Bu metot, gönderilen image nesnesini hafızadakilerle kıyaslayarak eşleşen kaydın bilgilerini dönmektedir.
 {
     if (_IsTrained)
     {
         EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);
         //handle if recognizer.EigenDistanceThreshold is set as a null will be returned
         //NOTE: This is still not working correctley
         if (ER == null)
         {
             Eigen_label    = "Tanımsız";
             Eigen_Distance = 0;
             return(Eigen_label);
         }
         else
         {
             Eigen_label    = ER.Label;
             Eigen_Distance = ER.Distance;
             if (Eigen_Thresh > -1)
             {
                 Eigen_threshold = Eigen_Thresh;
             }
             if (Eigen_Distance > Eigen_threshold)
             {
                 return(Eigen_label);
             }
             else
             {
                 return("Tanımsız");
             }
         }
     }
     else
     {
         return("");
     }
 }
コード例 #7
0
ファイル: Classifier_Train.cs プロジェクト: eacikel/YuzTanima
        /// <summary>
        /// Recognise a Grayscale Image using the trained Eigen Recogniser
        /// </summary>
        /// <param name="Input_image"></param>
        /// <returns></returns>
        public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh = -1)
        {
            if (_IsTrained)
            {
                EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);
                //handle if recognizer.EigenDistanceThreshold is set as a null will be returned
                //NOTE: This is still not working correctley
                if (ER == null)
                {
                    Eigen_label    = "YABANCI";
                    Eigen_Distance = 0;
                    return(Eigen_label);
                }
                else
                {
                    Eigen_label = ER.Label;

                    Eigen_Distance = ER.Distance;
                    if (Eigen_Thresh > -1)
                    {
                        Eigen_threshold = Eigen_Thresh;
                    }
                    if (Eigen_Distance > Eigen_threshold)
                    {
                        return(Eigen_label);
                    }
                    else
                    {
                        return("YABANCI");
                    }
                }
            }
            else
            {
                return("");
            }
        }
コード例 #8
0
        /// <summary>
        /// Recognise a Grayscale Image using the trained Eigen Recogniser
        /// </summary>
        /// <param name="Input_image"></param>
        /// <returns></returns>
        public string Recognise(Image <Gray, byte> Input_image, int Eigen_Thresh, FormYoklama form)
        {
            if (_IsTrained)
            {
                EigenObjectRecognizer.RecognitionResult ER = recognizer.Recognize(Input_image);
                //handle if recognizer.EigenDistanceThreshold is set as a null will be returned
                //NOTE: This is still not working correctley
                if (ER == null)
                {
                    Eigen_label    = "Tanımsız";
                    Eigen_Distance = 0;
                    return(Eigen_label);
                }
                else
                {
                    try
                    {
                        bool    karar = true;
                        OGRENCI ogr   = new OGRENCI();
                        ogr.OGRENCI_NO = ER.Label;
                        ogr            = Veritabani.OGRENCI_GETIR(ogr)[0];
                        Eigen_label    = ogr.AD + " " + ogr.SOYAD;

                        foreach (DataGridViewRow row in form.dgYoklama.Rows)
                        {
                            if (row.Cells[0].Value.ToString().Contains(ogr.OGRENCI_NO))
                            {
                                karar = false;
                            }
                        }

                        if (karar)
                        {
                            OGRENCI ogr2 = new OGRENCI();
                            ogr2 = Veritabani.OGRENCI_GETIR(ogr)[0];
                            form.dgYoklama.Rows.Add(ogr2.OGRENCI_NO, ogr2.AD, ogr2.SOYAD, ogr2.CINSIYET);
                        }

                        Eigen_Distance = ER.Distance;
                        if (Eigen_Thresh > -1)
                        {
                            Eigen_threshold = Eigen_Thresh;
                        }
                        if (Eigen_Distance > Eigen_threshold)
                        {
                            return(Eigen_label);
                        }
                        else
                        {
                            return("Tanımsız");
                        }
                    }
                    catch (Exception)
                    {
                        return("Tanımsız");
                    }
                }
            }
            else
            {
                return("");
            }
        }