Emgu.CV.EigenObjectRecognizer.Recognize C# (CSharp) Метод

Recognize() публичный Метод

Try to recognize the image and return its label
public Recognize ( Byte>.Image image ) : RecognitionResult
image Byte>.Image The image to be recognized
Результат RecognitionResult
        public RecognitionResult Recognize(Image<Gray, Byte> image)
        {
            float[] dist = GetEigenDistances(image);

             int index = 0;
             float eigenDistance = dist[0];
             for (int i = 1; i < dist.Length; i++)
             {
            if (dist[i] < eigenDistance)
            {
               index = i;
               eigenDistance = dist[i];
            }
             }

             RecognitionResult result = new RecognitionResult();
             result.Distance = dist[index];
             result.Index = index;
             result.Label = Labels[index];

             return result.Distance <= _eigenDistanceThreshold ? result : null;
        }

Usage Example

        private void btnDetect_Click(object sender, EventArgs e)
        {
            current = new Image<Bgr, byte>(filePath).Resize(300, 250, INTER.CV_INTER_CUBIC);
            Image<Gray, byte> grayScale = current.Convert<Gray, byte>();

                MCvAvgComp[][] detected = grayScale.DetectHaarCascade(face, scale, minNeighbors, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));
                foreach (MCvAvgComp d in detected[0])
                {
                    current.Draw(d.rect, new Bgr(Color.LawnGreen), 2);
                    if (trainingImgs.Count > 0)
                    {
                        Image<Gray, byte> dFace = current.Copy(d.rect).Convert<Gray, byte>().Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
                        MCvTermCriteria criteria = new MCvTermCriteria(trainingImgs.Count, epsilon);  //count, epsilon value
                        EigenObjectRecognizer recognize = new EigenObjectRecognizer(trainingImgs.ToArray(), trainingNames.ToArray(), 0, ref criteria);
                        MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 1, 1);
                        string name = recognize.Recognize(dFace);
                        current.Draw(name, ref font, new Point(d.rect.X - 2, d.rect.Y - 20), new Bgr(Color.Red));
                    }
                }
            picWebCam.Image = current.ToBitmap();
        }
All Usage Examples Of Emgu.CV.EigenObjectRecognizer::Recognize