FaceDetection UDF

  • Hallo Allerseits!


    Auf der Suche nach einer Möglichkeit, Gesichter zu erkennen, bin ich über das hier gestolpert: https://github.com/ShiqiYu/libfacedetection

    Und daraus ist vorerst mal eine kleine UDF entstanden.

    Funktioniert mit 32 und 64Bit.


    Ich hab selber noch nicht viel ausprobiert und kann daher auch nicht viel über die Parameter sagen - am besten mit großen und kleinen, vielen und wenigen usw... Gesichtern ausprobieren.


    Trotzdem viel Spaß!



    LandMarks:



    EDIT: Bugs behoben!

  • Hallo eukalyptus,


    schöne dich wieder hier zu sehen! :)


    Das Ergebnis ist durchaus brauchbar. Ich habe leider nicht so viele Bilder mit Gesichtern, werde aber mal danach googeln.

  • Awesome, worked 9 out of ten times i tried, on a highres image of Sinead O'Conner it found a face inside her left eye. :D


    It worked on UEZ avatar also, 45 confidence. :)


    Thanks.

    Bilder

    • uez2.png

    Einmal editiert, zuletzt von Werty ()

  • Here's an example of Live WebCam Tracking using EscApi.dll (attached), place in same folder as Eukalyptos script.


    Webcam obviously required :p


    Could be used for controlling stuff with your head, I'm gonna play around with Irrlicht and control a 3D model of a head, with my head :D

    Dateien

    • escapi.zip

      (63,68 kB, 134 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von Werty ()

  • That´s cool!


    I quick added a control window, to test the parameters

  • Very nice.


    I have a wierd behaviour here, if i try and add the confidence/angle stuff, only the confidence seem to work, angle is stuck at zero.


    Do you know what's going on ?


    It's this part of the code, where i added the drawstring line.

    Code
    For $i = 1 To $aFaces[0][0]
    _GDIPlus_GraphicsDrawRect($hGraphics, $aFaces[$i][0], $aFaces[$i][1], $aFaces[$i][2], $aFaces[$i][3], $hPen)
    _GDIPlus_GraphicsDrawString($hGraphics, "confidence: " & $aFaces[$i][4] & @CRLF & "angle: " & $aFaces[$i][5], $aFaces[$i][0] + 4, $aFaces[$i][1] + 4, "Arial", 16)
    If $bDoLM And UBound($aFaces, 2) > 6 Then
    For $j = 0 To 67
    _GDIPlus_GraphicsDrawEllipse($hGraphics, $aFaces[$i][6 + $j * 2], $aFaces[$i][7 + $j * 2], 4, 4, $hPen2)
    Next
    EndIf
    Next


    /edit, just just tried adding it to my script above, without all the green circles, and there it works, but it doesnt work in your script, confusing.


    /Edit2, Disregard, i found the reason, it only shows angle in mode 3 and 4, not 1 and 2. :) sorry for the inconvenience. :/

  • Ich habe das Example auf die Schnelle mal ein wenig umgebaut, dass es nach dem Anzeigen des Bildes nicht sofort beendet wird, sondern fragt, ob noch ein weiteres detektiert werden soll. Komischerweise schmiert Autoit (3.3.15.1) dann aber bei fast jedem zweiten Durchlauf ab... bei manchen Bilder sogar beim ersten!


    !>18:58:42 AutoIt3.exe ended.rc:-1073741819


    Hat jemand eine Idee, woran das liegen könnte?

  • Hi,


    das hängt an der Abfrage der Struct in der Funktion _FD_Detect()

    Füge

    $_tFD_Bmp=0

    $_tFD_BmpG=0

    vor dem Return $aFaces ein.