VB.NET 中的 EMGUCV 面部识别问题

Posted

技术标签:

【中文标题】VB.NET 中的 EMGUCV 面部识别问题【英文标题】:EMGUCV facial recognition issue in VB.NET 【发布时间】:2018-04-12 00:44:31 【问题描述】:

我正在尝试使用 VB.NET 实现一个 Web 应用程序,该应用程序应该使用 EMGUCV 库对文件夹中的图像执行面部识别。无论如何,当我在 facerecognizer 对象上调用方法 train 时,会引发一个奇怪的异常:

'OpenCV: 0

这是我的测试代码:

Imports System.Drawing
Imports Emgu.CV
Imports Emgu.CV.Face
Imports Emgu.CV.Structure
Imports Emgu.CV.Util

Public Class _Default
Inherits Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

End Sub

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim images As New Mat

    Dim Palb0 = "c://IMGDB//Alberto//0.jpg"
    Dim Palb1 = "c://IMGDB//Alberto//1.jpg"
    Dim Pcon0 = "c://IMGCONFRONTO//0.jpg"

    images.PushBack(CvInvoke.Imread(Palb0, CvEnum.LoadImageType.Grayscale))

    images.PushBack(CvInvoke.Imread(Palb1, CvEnum.LoadImageType.Grayscale))

    Dim model = New EigenFaceRecognizer(80, Double.PositiveInfinity)

    Dim labels As New VectorOfInt

    Dim a(0) As Integer
    a(0) = 0

    labels.Push(a)

    model.Train(images, labels)

    Dim imgConf As Mat

    imgConf = CvInvoke.Imread(Pcon0, CvEnum.LoadImageType.Grayscale)

    model.Predict(imgConf)

    Dim PR As FaceRecognizer.PredictionResult

    Dim dst = PR.Distance
    Dim lbl = PR.Label

    MsgBox(dst)


End Sub

End Class

我几乎尝试了所有方法,但无法解决。任何帮助将不胜感激。

【问题讨论】:

引发了一个奇怪的异常,那是什么异常? NullReferenceException? 它只是说 uhandled excepion: 'OpenCV: 0 【参考方案1】:

我自己设法找到了解决方案。 这个问题真的和我用于构造函数的对象类型一样简单。它应该是 VectorOfMat 而不是 Mat。该类无法工作,因为它需要一个数组。

Dim images As New VectorOfMat

另一个问题在于构造函数本身。应该是:

Dim model As New EigenFaceRecognizer(80, Double.PositiveInfinity)

还有一条建议:如果 train 方法没有接收到至少包含两个图像的 mat 数组,它将引发另一个异常。图像应该具有相同的大小,否则(奇怪的)对象会再抛出一个异常。

最后预测结果的正确代码是:

    Dim PR As FaceRecognizer.PredictionResult = model.Predict(imgConf)

你得到特征脸预测距离:

    Dim dis = PR.Distance

希望这可以让某人摆脱困境。

Ceers。

【讨论】:

以上是关于VB.NET 中的 EMGUCV 面部识别问题的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 中的 Azure API(面部识别)[关闭]

如何在 iOS 上进行面部识别?

面部识别/合并软件[关闭]

光标通过面部中心移动?

win10无法使用面部识别

面部表情识别3:Android实现表情识别(含源码,可实时检测)