picamera - Serienbildaufnahme mit fortlaufender Nummerierung

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Unforgiven11
User
Beiträge: 7
Registriert: Donnerstag 10. September 2015, 18:34

Hallo,

ich bin gerade dabei mir ein kleines Programm zu basteln, das mir, wenn über einen PIR-Sensor eine Bewegung erkannt wird, einige Aktionen ausführt. Im Moment hängt es bei der Serienaufnahme mittels picamera. Hier möchte ich bei Erkennung einer Bewegung zehn Bilder hintereinander fotografieren, die fortlaufend nummeriert werden (Angabe in der Klammer hinter camera.capture).

Das ist mein Code bisher, der nicht funktioniert:

Code: Alles auswählen

import time
import RPi.GPIO as GPIO
import picamera

camera = picamera.PiCamera()
camera.resolution = (1024, 768)

# RPi.GPIO Layout verwenden (wie Pin-Nummern)
GPIO.setmode(GPIO.BOARD)

# Pin 7 (GPIO 4) auf Input setzen
GPIO.setup(7, GPIO.IN)

while True:
    if GPIO.input(7) == GPIO.HIGH:
        print("Bewegung erkannt")
        for dateinummer in range (1,10):
            camera.capture("picameratest", dateinummer, ".jpg")
            time.sleep(1)
        time.sleep(1)
        continue
Zuletzt geändert von Anonymous am Sonntag 15. November 2015, 23:14, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Unforgiven11: funktioniert nicht, ist eine schlecht Fehlerbeschreibung. Du bekommt ja eine ausführliche Fehlermeldung mit Traceback. Daran kannst ja sowohl sehen, wo etwas falsch ist und auch was. Man kann nicht einfach so ein paar Variablen an eine Funktion übergeben und hoffen, dass die Funktion damit schon macht, was man erwartet. capture erwartet einen Dateinamen:

Code: Alles auswählen

filename = "picameratest{0:02d}.jpg".format(dateinummer
Unforgiven11
User
Beiträge: 7
Registriert: Donnerstag 10. September 2015, 18:34

Hallo und vielen Dank,

stimmt, ich hätte eine Fehlerbeschreibung mitliefern sollen. Ich hatte allerdings schon etliche erfolglose Varianten getestet und deren Fehlermeldungen hätten hier wahrscheinlich auch niemanden weitergebracht, da diese Versuche alle ähnlich einfältig waren.

Die vorgeschlagene Lösung funktioniert perfekt, was mir aufzeigt, dass ich mich wohl mal eingehend mit format beschäftigen sollte.

Vielen Dank und Grüße

Martin
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Obwohl `format` sehr nuetzlich ist, solltest du dich eher damit beschaeftigen, wie Funktionen funktionieren und welche Argumente die Funktionen benoetigen, die du verwendest. Sonst stolperst du immer wieder darueber.
Antworten