2017-10-30 11 views
0

Ich versuche, eine Webanwendung mit VB.NET zu implementieren, die Gesichtserkennung auf Bildern in einem Ordner mit EMGUCV-Bibliothek durchführen soll. Wie auch immer, wenn ich rufe Methode Zug auf der facerecognizer eine seltsame Ausnahme-Objekt wird ausgelöst:EMGUCV Gesichtserkennung Problem in VB.NET

‚OpenCV: 0 < = _rowRange.start & & _rowRange.start < = _rowRange.end & & _rowRange.end < = m.rows

Hier ist mein Testcode:

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 

ich fast alles tryed aber es lösen kann. Jede Hilfe wird wirklich geschätzt.

+0

_eine merkwürdige Ausnahme ist ausgelöst_ und welche Ausnahme ist das? NullReferenceException? –

+0

Es sagt nur Uhandled Ausnahme: 'OpenCV: 0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows – Grey

Antwort

0

Ich habe selbst eine Lösung gefunden. Das Problem war wirklich so simpel wie der Typ des Objekts, das ich für den Konstruktor verwendet habe. Es sollte ein VectorOfMat anstelle von Mat sein. Die Klasse konnte nicht funktionieren, weil sie ein Array erwartete.

Dim images As New VectorOfMat 

Ein anderes Problem war im Konstruktor selbst.

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

Ein weiterer Ratschlag: Es war sein soll, wenn der Zug Verfahren eine Reihe von Matte aus mindestens zwei Bilder doesen't erhalten, wird es eine weitere Ausnahme werfen. Die Bilder sollen von gleicher Größe sein oder (seltsam) das Objekt wird eine weitere Ausnahme werfen.

schließlich der richtige Code für die predictionresult ist:

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

und Sie erhalten Eigengesichter Vorhersage Entfernung:

Dim dis = PR.Distance 

Hope this jemand aus der Patsche bekommen.

Ceers.