EMGU CV 图像人脸识别
EMGU CV Face Recognition from Image
我之前一直在使用 OpenCV 进行 C++ 工作,而且效果很好。现在,我正在开发一个 C# 项目并使用 EMGU CV 进行性别识别。我对预测功能有疑问。每次我 运行 它,程序在 Predict 函数上崩溃,当我擦除预测行时,它是 运行ning。这是我的代码:
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
方法!
我之前一直在使用 OpenCV 进行 C++ 工作,而且效果很好。现在,我正在开发一个 C# 项目并使用 EMGU CV 进行性别识别。我对预测功能有疑问。每次我 运行 它,程序在 Predict 函数上崩溃,当我擦除预测行时,它是 运行ning。这是我的代码:
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
方法!