Face Tracking mit OpenCV und Pan-Tilt-Hat

  • Hallo und da bin ich wieder.

    Flexkabel war nicht defekt (für 10 € wieder umsonst bestellt).

    Mir ist leider der Stecker / Pin am Raspberry abgebrochen und somit hatte das Kabel wohl keinen richtigen Kontakt mehr.

    Zum Glück liegt hier immer ein weitere Raspberry rum ;)

    Ok...

    Also, was ist alles seitdem passiert.

    Ich habe mich durch etliche Anleitungen gelesen und in einem chinesischen Forum was entdecken können (Übersetzungsprogramme sind ein graus).

    Also, wieder kompletter Neustart, Anleitung und Korrekturen befolgt.

    Befehl mit python3 zum ausführen gestartet...es passiert nichts.

    Und ich meine gar nichts, keine Fehlermeldung, nix. Er springt weiter um den nächsten Befehl eingeben zu können.

    ??????? Was ist den jetzt los.

    Kameracheck...funktioniert.

    Servotest...funktionieren.

    Wenn ich nur python3 eingebe, erscheint die Versionsnummer (3.7.3), also ist das ja auch da.

    Ideen?


    Ach ja:

    pi@raspberrypi:~ $ sudo python3 cam_pantiltcontrol.py

    python3: can't open file 'cam_pantiltcontrol.py': [Errno 2] No such file or directory

    Datei ist aber definitiv vorhanden (sehe sie mit Dateimanager/Filezilla).


    Grüße


    Lösung: ---Hat sich geklärt---

    Habe die Dateiinhalt geprüft und dieser war leer- Warum auch immer!!!!!!-

    Einmal editiert, zuletzt von Discoverer81 (1. November 2021 um 14:55)

  • Und weiter geht die Hatz.

    Neue Fehlemerldung (hört das denn nie auf?).

    pi@raspberrypi:~/palt-tilt-cam $ python3 cam_pantiltcontrol.py

    /usr/lib/python3/dist-packages/data/haarcascade_frontalface_default.xml

    select timeout

    select timeout

    Segmentation fault


    Hiiiiiiilfe!!!! :(

  • Hallo,

    SD-Karte geprüft, ist sauber.

    Alternative SD-Karte mit letztem Image gemacht.

    Das selbe Problem tritt auf.

    Daran soltle es also nicht liegen, außer das alle SD-Karten kaputt sind.

    Vom Speicher her sind 4 GB verbraucht und 28 noch frei.

    Daran sollte es also auch nicht liegen.

  • /usr/lib/python3/dist-packages/data/haarcascade_frontalface_default.xml

    Hattest du den 'data'-Ordner nicht irgendwo in '/Home/XXX/...'?

    Sollen wir uns nochmal die ersten 25 Zeilen anschauen und die vollständige Fehlermeldung?

    Oder hast du in der zwischen Zeit noch etwas anderes geändert?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo,

    ich habe ihm gegeben wonach es ihm verlangte.

    Und zwar indem ich den Ordner data/xxx dorthin kopiert habe.

    Der aktuelle Fehler kam von der Kamera:

    pi@raspberrypi:~ $ raspistill -o image.jpg

    Camera control callback cmd=0x4f525245mmal: No data received from sensor. Check all connections, including the Sunny one on the camera board

    ^Cmmal: Aborting program

    Anschlüsse überprüft - das goldene Stück an der Kamera schien das Problem zu sein.

    jetzt klappt das.......ABER...Trommelwirbel.......

    FEHLERMELDUNG!!!!!!!

    Und zwar das bekannte:

    /usr/lib/python3/dist-packages/data/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


    Bald haue ich mit dem Kopf gegen die Wand.

    Vorschläge? (außer Bandagen zu besorgen?)


    Nachtrag: Vielleicht versteht jemand die chinesische Lösung

    https://programmerwiki.com/article/53252822608/

  • Vorschläge? (außer Bandagen zu besorgen?)

    Anlauf nehmen :stumm:

    Hab gerade auch mal etwas gegooglt und wenn ich das richtig verstanden habe, dann ist dein Bild, dass die Kamera aufnimmt "leer" und das würde auch den früheren Beitrag von __blackjack__ bestätigen. Er schrieb sinngemäß in Beitrag 7, dass gar nicht überprüft wird, ob überhaupt ein Bild gelesen wird.

    Du musst nun sicher stellen, dass da wirklich ein Bild ankommt.

    Wenn ich noch eine SD-Karte übrig hab (heute MIttag musste ich schon eine beerdigen :rip: ) versuche ich das mal nachzustellen.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo,

    ich kann deinen Fehler nicht nachstellen.

    Ich habe einen Raspberry Pi Zero und eine PiCam verwendet. Installiert wurde das neuste Raspberry-OS.

    Das ist aber nicht die Fehlermeldung die du hast. Ich habe keine Servos oder so etwas angeschlossen. Vermutlich daher der Fehler.

    Dann war ich neugierig:

    Meiner Meinung nach funktionieren bei mir beide Varianten.

    Sorry ich weis nicht wie ich dir noch helfen könnte.

    Weicht deine Vorgehensweise von meiner ab? Habe ich etwas vergessen?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hall Dennis!

    Danke für deine Mühe des Nachstellens.

    Ich habe meine SD-Karte neu formatiert, System neu aufgesetzt und deine erste Anleitung ohne und mit Änderung der Zeile 21 exakt befolgt.

    Doch meine Fehlermeldung weicht von deiner ab:

    pi@raspberrypi:~/forumtest/palt-tilt-cam $ python3 cam_pantiltcontrol.py

    /usr/lib/python3/dist-packages/data/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

    Hast du evtl einen Schritt vergessen aufzulisten.

    Sonst weiss ich echt nicht weiter.

    Grüße

  • Hallo,

    wurde bereits installiert.

    Code
    pip3 install smbus

    Ich vermute es liegt an den Pfaden.

    Code
    /usr/lib/python3/dist-packages/data/haarcascade_frontalface_default.xml

    Es existiert kein "data"-Ordner und dementsprechend fehlt auch der Rest.

    Daraus ergibt sich die Frage, warum hat Dennis diesen Ordner und ich nicht (unter der Prämisse d. nicht von seiner Anleitung fehlt).

    Interessanterwesei finde ich aber auch kein Ordner mit "OpenCV" ??? (ja, wurde installiert, keine Fehlermeldung, etc, trotzdem, finde ihn auch mit find -name opencv nicht)

  • Hallo,

    Du musst vermutlich noch python3-smbus installieren.

    Dann würde so was wie "No module named 'smbus' found" erscheinen. 8o

    Hast du evtl einen Schritt vergessen aufzulisten.

    Ne habe ich nicht, da ich die Aktionen parallel zum ausführen notiert habe.

    Ich hoffe für dich, dass noch jemand einen entscheidenden Lösungsansatz für dich hat. Ich weis leider nicht mehr weiter.

    Grüße und viel Erfolg

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Bei mir kommt nach einer Weile:

    Code
    python3 cam_pantiltcontrol.py
    /usr/lib/python3/dist-packages/data/haarcascade_frontalface_default.xml
    Traceback (most recent call last):
      File "cam_pantiltcontrol.py", line 55, in <module>
        pwm = PCA9685()
      File "/home/pi/palt-tilt-cam/PCA9685.py", line 36, in __init__
        self.write(self.__MODE1, 0x00)
      File "/home/pi/palt-tilt-cam/PCA9685.py", line 40, in write
        self.bus.write_byte_data(self.address, reg, value)
    OSError: [Errno 121] Remote I/O error

    Ich habe aber auch weder Kamera, noch sonst etwas dran.

    Ein Verzeichnis /usr/lib/python3/dist-packages/data/ habe ich auch nicht, wird wohl virtuell sein.

  • Hallo Dennis,

    eigentlich dürfte dein Script gar nicht funktionieren.

    Du benutzt den Pfad

    Code
    "/home/pi/forumtest/opencv/data/haarcascade_frontalface_default.xml")

    Die xml-Datei liegt dort aber gar nicht ab.

    Da ist noch ein Ordner dazwischen, nämlich "haarcascade".

    Andere Frage...welche OpenCV version hast du?

  • Discoverer81 An der Stelle ist `gray` einfach leer. Das hatten wir doch schon. Der Code prüft davor halt nicht ob auch tatsächlich ein Bild gelesen werden konnte. Das bedeutet das entweder grundsätzlich so mit Deiner Hardware keine Bilder gelesen werden können, oder das manchmal keine gelesen werden können. Was bei mancher Hardware ”normal” ist, das die ersten paar Anfragen noch nichts liefern.

    Ich würde ja erst mal mit einem ganz einfachen Programm anfangen das einfach nur Bilder liest und anzeigt. OpenCV hat auch eher eine C-API, also auch die Python-Anbindung. Da gibt es keine Ausnahmen. Es kann also schon sein, dass das Erstellen des `VideoCapture`-Objekts nicht erfolgreich war. Also es gibt auf jeden Fall das Objekt, aber ist das auch erfolgreich mit einer Kamera verbunden? Wenn Du das wissen willst, musst Du das explizit mit `isOpened()` prüfen. Das sehe ich in dem Code auch nicht.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Hallo,

    mach mich nicht fertig.

    Ich habe mich exact daran gehalten.

    Wie kann es da zu unterschiedlichen Ergebnissen kommen?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!