图像中的emgu简历面部识别

EMGU CV Face Recognition from Image

本文关键字:面部 识别 emgu 图像      更新时间:2023-10-16

我之前曾与OpenCV合作进行C 工作,而且运作良好。现在,我正在开发一个C#项目,并使用EMGU CV进行性别识别。我对预测功能有问题。每次我运行它时,程序都会在预测功能上崩溃,当我删除预测行时,它正在运行。这是我的代码:

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 cv。

中使用它

我也在从事emgucv,所以我想我可以在这里指出几件事,因此,第一件事是您加载" YML"文件,是在识别识别器经过训练或从某个地方获得后保存的此文件。因为我的理解是首先要训练识别器,所以YML文件的结构是什么。为什么要加载级联反应,要在哪里使用它?(通常用于检测面)

如果您说该程序崩溃很可能是因为训练有素的集合中没有项目。(在这种情况下,我猜是YML文件)或我阅读的内容,您至少需要两个面孔,以便使用Fisher识别器。

发生这种情况,因为FaceRecognizer希望在调用Predict方法之前接受训练。

您甚至可以通过face.Load(yourTrainingFile.xml)方法或face.Train(yourImages.ToArray, imageIds.ToArray())方法加载现有的XML培训文件。

将您的FaceRecognizer.PredictionResult predictedLabel = face.Predict(img1);代码零件放在trycatch中,将调试器关闭不会关闭,您将捕获错误消息。

ps:如果自上次Training.xml文件以来已更改了图片的数量,则建议调用face.Train方法而不是face.Load方法!