Kamera mit Taster

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hey Leute,

    ich bin gerade dabei folgendes zu programmieren:
    Man drückt einen Taster, eine LED leuchtet und die Kamera macht ein Bild.
    Das sieht bis jetzt so aus:

    So funktioniert es, aber das alte Bild wird immer wieder überschrieben, weil das aufgenommene Bild immer den Namen: Bild.jpg bekommt.
    Wie schaffe ich es, dass wenn man den Taster einmal drückt das Bild mit dem Namen Bild1.jpg und wenn man den Taster nochmals drückt ein neues Bild mit dem Namen Bild2.jpg abgespeichert wird, und immer so weiter?

  • Hallo,

    ungetestet, aber sollt funktionieren:

    Zu beachten ist, dass nach Ende und Neustart des Progs die Zählungs natürlich wieder bei 1 anfängt. Wenn Bilder _nie_ überschrieben werden soll, dann hängt statt der 1,2,... einen timestamp an den Dateinamen an.[/code]

    Zu deinem Code:
    * Python benötigt keine Klammer um if-Bedingungen
    * "if GPIO.input(18)" ist das gleiche wie "if GPIO.input(18) == True". Ersteres ist aber die gängigere Schreibweise.

    Gruß, noisefloor

  • Hey noisefloor,

    vielen Dank für deine Antwort. Hat ohne Probleme funktioniert.

    Ich habe da aber noch eine Frage, bei der du mir vllt. auch behilflich sein kannst.

    Da es sich bei meinem Projekt um eine Überwachungskamera handelt, soll die Kamera von dem "Dieb" schnell ein Foto machen.
    Was mir aber aufgefallen ist, ist dass die Kamera das Bild ganz schön lange aufnimmt. Wenn sich der "Dieb" dann bewegt, wird das Bild verschwommen und man erkennt nichts mehr.

    Weißt du vllt. wie man es in Python schafft, dass die Kamera nur ganz kurz aufnimmt?

  • Wahrscheinlich gar nicht. ggf könnte die warm-up Zeit ein wenig helfen.

    http://picamera.readthedocs.org/en/release-1.9…uring-to-a-file
    http://picamera.readthedocs.org/en/release-1.9…a.exposure_mode

  • ok, danke werde ich gleich mal ausprobieren.

    Jetzt ist mir aber noch aufgefallen, dass wenn man den Taster die ganze Zeit hält die ganze Zeit über ein Foto aufgenommen wird.

    Kann man es irgendwie so machen, dass das Programm einen gedrückten Taster so handhabt, als wäre er nur kurz gedrückt worden?

  • Hallo,


    Jetzt ist mir aber noch aufgefallen, dass wenn man den Taster die ganze Zeit hält die ganze Zeit über ein Foto aufgenommen wird.

    Kann man es irgendwie so machen, dass das Programm einen gedrückten Taster so handhabt, als wäre er nur kurz gedrückt worden?

    Richtig, weil so lange der Taster gedrückt ist, ist `GPIO.input(18)` ja auch `true` ;)

    Quick'n'dirty sollte das so aber zu beheben sein:

    Vielleicht geht das aber auch eleganter, in dem du nur ein steigendes Signal auf Pin 18 detektierst - das passiert ja nur, wenn der Taster gedrückt wird - und kein (dauerhaft) anliegendes Signal. Dazu müsste sich dann mal wer aus der Bastel-Fraktion äußern :)

    Gruß, noisefloor

  • ich greife das Thema mal auf:
    Ist es nicht möglich die Belichtungszeit der Kamera einzustellen?
    Sodass sie bei GPIO HIGH einfach ein kurzes Bild macht bzw wenn man am taster drauf bleibt eine Serie von BIldern (mit kurzer Belichtungszeit)?

    lg chris

  • stehe gerade vor dem selbem Problem, das meine Bilder überschrieben werden.
    Mit dem Counter Eintrag funktioniert soweit gut, aber nur bei einem Bild. Ich möchte aber 5 Bilder mit einmal mal machen und diese sollten gespeichert werden.

    noisefloor hat dazu schon timestamp angesprochen und würde mich freuen wenn mir das jemand Erleutern könnte wie ich das im Zusammenhang mit Raspistill in einem Pythonscript verwende.
    Raspistill ist per subprocess im script und wird über ein Tastendruck gestartet.

    lg

  • hey bootsmann

    was du mir mit iteration empfehlen wolltest hab ich leider noch nicht raus, aber dein link hat mir schon etwas geholfen. Wäre aber zu einfach wenn alles auf anhieb funktionieren würde wie man sich das vorstellt, daher hier das nun folgende Problem :D

    das script sieht jetzt wie folgt aus... subprocess wurde entfernt


    Nun sollte nach meinem verständnis alle 3 Sekunden ein Bild gemacht werden bis 100 Bilder.
    Leider gibt er mir jetzt nach dem ersten geschossenen Bild das aus.

    Code
    Traceback (most recent call last):
     File "foto.py", line 20, in <module>
       for i, filename in camera.capture_continuous('img{timestamp:%Y-%m-%d-%H-%M-%S}.jpg'):
    ValueError: too many values to unpack

    hab dazu auch einges bei google gefunden, aber mit meinem englisch jetzt kein logischen zusammhang gefunden woran es in meinem script liegt
    hoffe du kannst mir da auf die richtige spur helfen ;)

    lg

  • Hallo,

    vlt könntest du mir auch nochmal bei etwas grundsätzlichem helfen ;)
    "Taster" - kann ich hier nun einen alten An / Ausschalter aus einem PC nehmen der halt zwei Anschlüsse hat? An welche Pins muss ich die beiden dann anschließen (Pi2) ?
    Wenn man hier freie Wahl hat wären zwei Pins nebeneinander natürlich am besten, da das Kabel mit den beiden Adern noch "zusammen" ist.

    Oh je ich hoffe das kann man halbwegs verstehen :)

Jetzt mitmachen!

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