Face Tracking mit OpenCV und Pan-Tilt-Hat

  • Discoverer81 Schreib halt ein Minimalprogramm und teste auf Probleme, was das bisherige Programm ja nicht macht. Teste ob das `VideoCapture`-Objekt überhaupt eine ”offene Verbindung” hat, und beim Lesen der Bilddaten, ob da tatsächlich was gelesen wurde.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • eigentlich dürfte dein Script gar nicht funktionieren.

    Ich habe nur geschaut wo 'data' liegt und den Rest des Pfades aus dem Skript übernommen. Bin gerade nicht daheim und kann deswegen die Unterordner nicht ansehen. Dafür habe den GitHub-Link von dir verwendet.

    Aber es hat davor auch funktioniert, nur habe ich auch dort die Ordnerstruktur nicht angeschaut. Wie und was ich installiert habe, habe ich ja geschrieben.


    Du wirst am besten jetzt auf __blackjack__ 's Rat hören müssen, dich mit Python beschäftigen. Lass dich nicht unterkriegen, wenn du viel von seinen Antworten googln musst, das ging/geht mir auch so ^^

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Hallo!


    Bahnhof !!!


    Anyway, ich habe mal versucht was aufzusetzen.



    Ich erhalte dann die Fehlermeldung:

    Habe ich damit "den" Fehler bewiesen oder einen neuen erschaffen ??

  • Abend,


    pip3 install icecream


    dann

    im folgenden Code, dein Verzeichnis anpassen. Dass ist das, was du von GitHub heruntergeladen hast. War bei dir irgendwo '/home/pi/XXX/..' Aber nur das Verzeichnis eintragen ohne die *.xml-Datei. Also wie in der Vorlage.


    Bitte die Ausgaben des Skripts posten.


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Hallo Dennis,


    hier kommts


  • Okay, sieht meiner Meinung nach gut aus.


    Ich habe noch zwei Zeilen eingefügt, um zusehen ob etwas in 'faces' steht. Beim Programmtest bitte in die Kamera lächeln ;)


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Guten Morgen


    das Lächeln war das anstrengendste

  • Moin,


    ich habe eigentlich eine Ausgabe von Zeile 31 erwartet. In meinem Test hat mir das Skript Werte für x, y, w und h ausgegeben und ich bezweifle dass das Lächeln den Unterschied macht.


    Da mir ehrlich gesagt kein Grund einfällt, wieso du die Ausgabe nicht hast, kann ich dich nur fragen, ob du eventuell beim kopieren was vergessen hast?


    Aber was du vielleicht gemerkt hast, dein Fehler den du mal hattest und sich auf 'face_cascade.detectMultiScale' bezog ist weg. Ist das kein Grund zum lächeln? :)


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Servus,


    habe sicherheitshalber mal die Datei gelöscht und neu erstellt.


    Auch wenn ich mir sicher bin, das schon gemacht zu haben, es gab doch eine Änderung.

    Evtl lag es aber auch am Licht oder dass ich diesmal mehr Abstand genommen habe.

    Ok, die bessere Laune könnte dazu auch beitragen haben.

    Deine Werte sind jetzt drin


    Trotzdem Spanisch!


    Verstehe ich richtig, dass die Aufzeicnung funktioniert und damit das als Fehlerquelle ausgesclossen ist?

    Was uns wiederum zum cascade-Pfade-Fehler führt?


    Grüße

  • Nur als kleinen Tipp... Wenn Dennis89 einen Code postet, der beim TE nicht funktioniert, kann ja evtl. Dennis89 ein Image seines Pis erstellen und auf GoogleDrive als Zip oder so hochladen, damit ihr vielleicht auchschließen könnt, obs am System oder an der HW liegt.


    Duck und Weg.

    Wenn's brennt 112 hilft weiter!

  • Ok, die bessere Laune könnte dazu auch beitragen haben.

    :thumbup:

    Verstehe ich richtig, dass die Aufzeicnung funktioniert und damit das als Fehlerquelle ausgesclossen ist?

    So verstehe ich das auch.


    Was uns wiederum zum cascade-Pfade-Fehler führt?

    Wenn der Fehler noch bestehen würde, wäre er jetzt in deinem 'denniy.py' - Skript aufgetaucht.


    Ich würde jetzt mal das ursprüngliche Skript nehmen, Zeile 21 gegen diese Zeile tauschen:

    cascPath = '/home/pi/forumtest/opencv/data/haarcascades/haarcascade_frontalface_default.xml'


    und mal sehen was passiert. Wir haben meiner Meinung nach ja rausgefunden, dass es damit zu keiner Fehlermeldung kam, dass die Videoverbindung steht und das auch Bilder gelesen werden.[/tt]


    Duck und Weg.

    Ja danke, tschüüüüüss :wink:



    fred0815 was passiert, wenn du es so machst wie ich?


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Hallo.


    @fred01815: Nutze Beitrag #50.

    Dennis hat alles super zusammengefasst.


    Sobald ich alles zum laufen kriege, teile ich es abernochmal zusammengefasst in einem Beitrag mit.


    Irgendwas stimmt mit der Zeile nicht.

    Klammern?

    Muss noch etwas basteln.



    Nachtrag: ok, es müsste lauten

    cascPath = ('home/pi/forumtest/opencv/data/haarcascades/haarcascade_frontalface_default.xml')


    Zumindest der erste Schrästrich muss weg sonst kommt es zu einem "Init Error"

    Ob die Klammern hinmüssen? Beide Varianten führen zum nächsten, bereits bekannten, Error.

    Code
    pi@raspberrypi:~/forumtest/palt-tilt-cam $ python3 cam_pantiltcontrol.py
    home/pi/forumtest/opencv/data/haarcascades/haarcascade_frontalface_default.xml
    OpenCV Error: Assertion failed (!empty()) in detectMultiScale, file /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/objdetect/src/cascadedetect.cpp, line 1681
    Traceback (most recent call last):
      File "cam_pantiltcontrol.py", line 121, in <module>
        faces = faceCascade.detectMultiScale(gray,scaleFactor=1.2, minNeighbors=4, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
    cv2.error: /build/opencv-L65chJ/opencv-3.2.0+dfsg/modules/objdetect/src/cascadedetect.cpp:1681: error: (-215) !empty() in function detectMultiScale
  • Ob die Klammern hinmüssen? Beide Varianten führen zum nächsten, bereits bekannten, Error.

    Also irgendetwas läuft seltsam. Da muss keine Klammer hin und der erste Slash kann auch bleiben. Wenn etwas zwischen Anführungszeichen bzw. Hochkomata steht, dann ist die Zeichenfolge vom Typ String. Ein führender Slash hat dabei keine Auswirkung. Anders ist es zum Beispiel mit der Zeichenfolge "\n", lass dazu mal folgenden Code laufen:


    Code
    ein_daten_typ = '/Ich bin ein String'
    
    print(type(ein_daten_typ))
    print(ein_daten_typ)
    
    mit_bestimmter_zeichenfolge = '/Ich bin\nein String'
    
    print(type(mit_bestimmter_zeichenfolge))
    print(mit_bestimmter_zeichenfolge)


    Damit ich den Fehler mit 'smbus' nicht mehr bekomme, habe ich alle auskommentiert was mit 'pmw' zu tun hat. Dann meine Zeile 21, wie in meinem Post geschrieben, eingefügt und als Ergebnis erhalte ich:


    Code
    pi@raspberrypi:~/forumtest/palt-tilt-cam $ python3 cam_pantiltcontrol.py
     x y previous  0 0
     x y new  16 380
    Unable to init server: Verbindung ist gescheitert: Verbindungsaufbau abgelehnt
    
    (face_tracking:2476): Gtk-WARNING **: 17:01:26.939: cannot open display:

    Die Ausgabe mit 'new' wird erst in Zeile 161 abgearbeitet, mein Code ist also an deiner fehlerhaften Zeile 121 schon "vorbei".


    Tut mir leid, jetzt weis ich wirklich nicht mehr weiter. Dein Test davor war erfolgreich und jetzt das :conf:

    Wenn du magst, kannst du auch deinen ganzen Code nochmals posten, falls doch irgendwo noch ein Tippfehler drin ist. Ansonsten halte ich mal den Platz für die Leute mit mehr Ahnung frei. Denen fällt bestimmt noch einiges ein :thumbup:


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • # Änderung Zeile21 in: cascPath=os.path.normpath("/home/pi/forumtest/opencv/data/haarcascade_frontalface_default.xml")

    Dennis89 Sollte es nicht so sein:

    /home/pi/forumtest/opencv/data/haarcascades/haarcascade_frontalface_default.xml

    ?

    Discoverer81

    Meine Ausgabe:

  • Guten Morgen fred0815 ,


    du hast Recht. In diesem Versuch hatte ich nur das Verzeichnis geändert. Schau dir mal noch meine letzten Versuche an, da habe ich dann explizit den Pfad an der *.xml - Datei angegeben.

    Versuch mal im Code alles mit 'pwm' auszukommentieren und eine Kamera anzuschließen (und aktivieren), falls du eine hast. Dann müsstest du das gleiche Ergebnis wie ich bekommen. :thumbup:


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Hallo,


    nitte eimal den Pfad hier überprüfen.

    Weiß nicht, wie viele Fehler ich da eingesetzt habe.


    Aktueller Fehler

    Code
    pi@raspberrypi:~/forumtest/palt-tilt-cam $ python3 cam_pantiltcontrol.py
    /home/pi/forumtest/opencv/data/haarcascades/haarcascade_frontalface_default.xml
     x y previous  0 0
     x y new  27 31
    Unable to init server: Could not connect: Connection refused

    cascPath =os.path.normpath("/home/pi/forumtest/opencv/data/haarcascades/haarcasascade_frontalface_default.xml")



    Muss ich ' oder " -Zeichen setzen?


    Grüße

    der dem Wahnsinn verfallen ist