Как использовать порог распознавания собственных объектов

#c# #opencv #face-recognition #emgucv

#c# #opencv #распознавание лиц #emgucv

Вопрос:

Я пытался написать программу распознавания лиц, и мне нужна помощь сообщества. Размещенный ниже код скомпилирован без ошибок, и распознаватель работает, если установленное мной пороговое значение равно 0, если я установлю пороговое значение > 0, то он определенно отобразит неизвестное лицо.
Я использую 4 обучающих изображения для человека.
Лицо в базе данных :
ПерсонА:
— ПерсонА1, ПерсонА2, ПерсонА3, ПерсонА4
PersonB:
— PersonB1, PersonB2, PersonB3, PersonB4
Пример сценария:
Если обнаружено лицо нового человека (которого нет в базе данных), пусть вызывается PersonC, но программа всегда отображает имя из базы данных между PersonA или PersonB.

Как отобразить новое обнаруженное лицо / PersonC как неизвестное лицо, если в базе данных нет лица. Есть идеи, где я ошибся? Заранее спасибо.

Я использую emgu cv 2.2.1.1150 с c # 2010 express
Инициализация imgRecognizer:

 private void AttendanceForm_Load(object sender, EventArgs e)
{
    dbFA = new FRAttendance_DBDataContext();
    timer.Start();
    face = new HaarCascade("haarcascade_frontalface_alt_tree.xml");
    Scanner = new Capture();
    Scanner.QueryFrame();
    Application.Idle  = new EventHandler(StartCamera);
    try
    {
    LoadData();
    ImageToList();
    MCvTermCriteria termCrit = new MCvTermCriteria(rowCount, 0.001);
    imgRecognizer = new EigenObjectRecognizer(trainingImages.ToArray(), personsLabel.ToArray(), 1000, ref termCrit);
    }
    catch (Exception err)
    {
        MessageBox.Show(err.ToString());
    }
}
  

Функция распознавания :

 private void btnScan_Click(object sender, EventArgs e)
{
    if (trainingImages.ToArray() != null)
    {
        try
        {
            faceImgLabel = imgRecognizer.Recognize(result);
            if (faceImgLabel.Trim().Equals(""))
            {
                txtHSID.Text = "Unknown";
                txtHSName.Text = "Unknown";
                MessageBox.Show("Unknown Face", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                logMeIn(faceImgLabel);
            }
        }
        catch(Exception errScan)
        {
            MessageBox.Show(errScan.ToString());
            MessageBox.Show("Wait until face detected", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    else
        MessageBox.Show("No image in collection list", " Information ", MessageBoxButtons.OK, MessageBoxIcon.Information);
        imgScan.Image = resu<
}