Gesichtserkennung

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Broco.

    Gesichtserkennung

    Guten Tag,
    also ich habe vor eine Gesichtserkennung zu machen. Von mir aus auch den Code von anderen verwenden. Aber es ist so, dass ich bis jetzt nur Code gefunden habe, der erkennt, dass ein Gesicht da ist. Ich will aber auch, dass er erkennt was für ein Gesicht da ist. Also man dann z.b dem Gesicht einen Namen geben kann wie Peter. Und wenn man dann das Programm neu startet und es ist das Gesicht von vorher, zeigt es an, dass es Peter ist.
    Gibt es da schon einen Code. Oder wie kann ich das umsetzen.
    Der derzeitige Code macht halt nur, dass es erkennt wo da Gesicht ist.
    Danke schonmal
    Mit freundlichen Grüßen
    CatchTheBird
    Hast du dir das AFORGE SDK (ich glaube das heißt so) für .NET angesehen ? . Vielleicht ist da etwas dabei. Wenn du ja schon das Bild erkennen kannst, musst du es halt speichern und bei dem nächsten mal nur nochmal vergleichen. Dazu gibts aber auch auf Google reichlich denke ich.

    Gruß
    Youtube Info Library 2013 jetzt im Showroom.
    Also bei mir ist ein grüne Kasten um das Gesicht. Soll ich jetzt einfach das in dem Kasten mit dem in dem Kasten beim Neustart vergleichen? Und nach was soll ich das vergleichen? Nach pixel? Und wenn man doch bei dem einen Bild näher dran ist geht das doch nicht.
    Wenn ich z.b die mundform merken will wie soll ich das anstellen?
    okay jetzt scheitert meine gesichtserkennung. Was ist denn da dran falsch?:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim p As String = Application.StartupPath
    3. PictureBox1.Image = Image.FromFile("C:\Users\****\Desktop\Emgu\bin\lena.jpg")
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    7. Dim ImageBgr As New Image(Of Bgr, Byte)(PictureBox1.Image)
    8. Dim HaarXML As New HaarCascade("haarcascade_frontalface_alt_tree.xml")
    9. Dim GrayImage As Image(Of Gray, Byte) = ImageBgr.Convert(Of Gray, Byte)()
    10. Dim ImgGraphics As Graphics = Graphics.FromImage(PictureBox1.Image)
    11. Dim MPen As New Pen(Brushes.YellowGreen, 8)
    12. ' Will take a several minute.. please wait..
    13. For Each m In GrayImage.DetectHaarCascade(HaarXML)(0)
    14. ImgGraphics.DrawRectangle(MPen, m.rect)
    15. Next
    16. Timer1.Stop()
    17. End Sub


    kommt der fehler:
    Eine Ausnahme (erste Chance) des Typs "System.TypeInitializationException" ist in Emgu.CV.dll aufgetreten.

    Zusätzliche Informationen: Der Typeninitialisierer für "Emgu.CV.CvInvoke" hat eine Ausnahme verursacht.

    Falls ein Handler für diese Ausnahme vorhanden ist, kann das Programm möglicherweise weiterhin sicher ausgeführt werden.
    Keine Pushposts nach wenigen Stunden! Nimm die Editierfunktion um Informationen nachzutragen.


    Anders als eingangs dargestellt, hat eine Geichtserkenung nur wenig mit einer Bilderkennung zu tun. Wichtiger ist es Merkmale der Gesichtsgeometrie mit anderen Merkmalen ins Verhältnis zu setzen.

    zum Beispiel:
    - Länge/Breite der Augenbrauen
    - Abstand der Augenbrauen
    - Abstand Augenbraue -> Auge
    - Länge/Breite der Kontoren der Nase
    - Länge/Breite der Konturen des Mundes
    - Abstand Mund -> Nase
    - Abstand Mund -> Kinnunterkante
    usw.
    Sag mir mal, wie Du eine Gesichtserkennung realisieren willst, wenn Du offensichtlich nicht mal weißt, wie Du es überhaupt angehen sollst? Solche Verfahren werden von professionellen Institutionen entwickelt und Du denkst, Du bekommst das hin? Wenn Du es wirklich ernst meinst, dann lies Dich in Biometrie und all die dazugehörigen Themen ein. Am Besten suchst Du Dir ein anderes Vorhaben, das führt zu ins Leere.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Gute Einsicht, es ist einfach zwecklos.
    Du müsstest ja 2 Bilder, die unter verschiedenen Winkeln aufgenommen wurden, miteinander vergleichen.
    Allein diese Winkelumrechnung (normierung) anhand weniger Merkmale ist nicht ganz trivial.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das ist auch nicht so ohne weiteres möglich. OCR-Software hat sich ganz langsam über die letzten Jahre entwickelt und Gesichtserkennung ist da noch viel härter.
    Du musst quasi Referenzpunkte in Bildern erkennen und Bilder dynamisch vergrößern/verkleinern/drehen können, bis sie mit einer Vorlage deckungsgleich sind.
    Dann musst du einzelne biometrische Faktoren erkennen können (z. B. Hautfarbe, Gesichtsbehaarung, Augenabstand, Nasenrückenlänge, Ohrengröße, Augenbrauenbreite, Wangenknochenposition und Größe, etc.). Für ein Gesicht kommen da mal locker 30-100 Werte (je nach Genauigkeit) zusammen, wenn man es vernünftig machen will, denn schließlich soll das Programm ja auch Personen erkennen, die sich rasiert haben oder den Haarschnitt ändern.

    Diese Werte musst du dann mit den Werten der Vorlage vergleichen, wobei du natürlich Toleranzen einplanen musst (für eventuelle Veränderungen einzelner Werte wie Frisur, Bildwinkel, Helligkeit im Raum etc.). Allein das herumspielen mit den Richtigen Einstellungen für Toleranzen wird ewig dauern.

    Wenn du jetzt schon Probleme mit der Programmierung an sich hast, wird das nichts :D