【问题标题】:EMGU CV Face Recognition from ImageEMGU CV 图像人脸识别
【发布时间】:2015-07-19 11:27:23
【问题描述】:

我之前一直在使用 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 中使用它。

【问题讨论】:

  • “程序崩溃”不是一个好的解释。你在哪一行遇到了什么错误?
  • 抱歉,我已经编辑了我的问题,呵呵。我有预测功能的问题。当我运行它时,它已关闭,没有错误详细信息。刚刚用代码 0 结束
  • 好的,但从我们的角度来看,这真的不清楚。我们没有关于 Predict 方法中发生了什么的详细信息。在这种情况下,我通常会设置一个断点并尝试一步一步地查看发生了什么。所以我只能建议获得更多的调试知识和经验。

标签: c# c++ opencv emgucv


【解决方案1】:

发生这种情况是因为 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方法!

【讨论】:

    【解决方案2】:

    我也在研究 EmguCV,所以我想我可以在这里指出一些事情, 所以首先是你加载“yml”文件,这个文件是你在识别器训练后保存的还是你从某个地方获得的。因为我的理解是首先你必须训练你的识别器,yml文件的结构是什么。为什么要加载级联,你打算在哪里使用它? (一般是用来检测人脸的)

    如果您说程序崩溃很可能是因为训练集中没有项目。 (在这种情况下,我猜这将是 yml 文件)或者正如我所读到的,您需要在训练集中至少有两个人脸才能使用 Fisher 识别器。

    【讨论】:

    • 嗨,谢谢您的回复。稍后我将使用级联从网络摄像头流式传输图像。对于训练集,我使用了超过 500 张图片的 256x256 图像。我尝试了任何来自互联网或相机的图片进行检测,但崩溃了。我怀疑输入图像必须与训练集大小相同,是真的吗?
    • 好吧,我使用 OpenCV/EMguCV 的方式是,我的测试图像将经过与训练图像相同的图像处理,例如:训练时,训练图像将变灰,调整大小并裁剪以提取人脸矩形 - 所以在测试时,首先测试图像将经过相同的流程,直到它提取图像矩形并调整大小。所以在我的情况下答案是肯定的,训练图像面部和测试图像面部大小相同
    • 是的,我可以确认测试图像必须与训练集图像大小相同,请参阅下面的错误。 “附加信息:OpenCV:输入图像大小错误。原因:训练和测试图像的大小必须相同!预期图像具有 6400 个元素,但得到了 409600。”
    猜你喜欢
    • 2013-12-22
    • 2013-07-04
    • 2012-03-18
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 2018-11-25
    • 2012-03-22
    相关资源
    最近更新 更多