c # — EMGU CV Распознавание лиц по изображению

Раньше я работал с OpenCV для работы с C ++, и он работал отлично. Сейчас я занимаюсь разработкой проекта на C # и использую резюме EMGU для распознавания пола. У меня проблема с функцией предикторов. Каждый раз, когда я запускал его, программа зависала при использовании функции Predict, когда я удалял строку прогноза, она запускалась. Вот мой код:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
FaceRecognizer face = new FisherFaceRecognizer(0, 3500);
face.Load("colorFisherFaceModel.yml");
Image<Bgr, Byte> img1 = new Image<Bgr, Byte>("C:\\Users\\sguthesis\\Pictures\\me.jpg");
cascade = new CascadeClassifier("C:\\Users\\sguthesis\\documents\\visual studio 2013\\Projects\\EmguCV FFR with Image\\EmguCV FFR with Image\\haarcascade_frontalface_alt_tree.xml");
FaceRecognizer.PredictionResult predictedLabel = face.Predict(img1);
}

Кроме того, я хочу получить вывод, 1 или 2,1 для мужчин и 2 для женщин. Я обучил много данных, которые сохранены на colorFisherFaceModel.yml. Он хорошо работал на OpenCV. Но я не знаю, как использовать это в резюме EMGU.

0

Решение

Я также работаю над EmguCV, так что, думаю, я могу указать несколько вещей здесь,
Итак, во-первых, вы загружаете файл «yml». Этот файл вы сохранили после обучения распознавателя или получили откуда-то. Поскольку я понимаю, что сначала вы должны обучить свой Recognizer, какова структура yml-файла. Почему вы загружаете каскад, где вы собираетесь его использовать? (обычно это используется для определения лица)

Если вы говорите, что программа потерпела крах, скорее всего, потому что в обученном наборе нет ни одного элемента. (в этом случае, я думаю, это будет файл yml) или как я прочитал, вам нужно минимум два лица в тренировочном наборе, чтобы использовать распознаватель Фишера.

1

Другие решения

это происходит потому, что FaceRecognizer хочет пройти обучение до Predict метод может быть вызван.

Вы даже можете загрузить существующий XML-файл обучения с помощью face.Load(yourTrainingFile.xml) метод или face.Train(yourImages.ToArray, imageIds.ToArray()) метод.

Поместите свой FaceRecognizer.PredictionResult predictedLabel = face.Predict(img1); часть кода внутри trycatch Блокировка отладчика не закроется, и вы получите сообщение об ошибке.

PS: если количество фотографий было изменено с момента последнего Training.xml файл был создан, то рекомендуется вызвать face.Train метод вместо face.Load метод!

0

По вопросам рекламы [email protected]