#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<
}