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 面部识别问题的主要内容,如果未能解决你的问题,请参考以下文章