Tach'schen,
ich bin auf der Suche nach einem Programm, mit dem ich die Belichtungseinstellungen obiger Kamera steuern kann.
Ich habe bereits ein funktionierendes Python-Skript. Ich verwende pyephem zur Berechnung
der Zeiten von Sonnenauf- und Untergang, sowie der Dämmerung an meinem Standort.
Entsprechend der errechneten Zeiten bzw. zu erwartenden Lichtverhältnisse stelle ich
die Kamera ein. Zusätzlich wird aus Testfotos während der Dämmerung ein statistischer
"Grauwert" errechnet und ggf. die Belichtung angepasst. Das Skript läuft bereits 24/7 und
schickt mir die Bilder an eine "Fotogalerie" auf meiner Webseite. So weit, so gut ...
Mit "v4l2-ctl -l" habe ich die zulässigen Einstellungs-Parameter der Kamara ermittelt:
# Ranges and default settings
#brightness (int) : min=0 max=255 step=1 default=128 value=0
# contrast (int) : min=0 max=255 step=1 default=32 value=0
# saturation (int) : min=0 max=255 step=1 default=34 value=0
# white_balance_temperature_auto (bool) : default=1 value=0
# gain (int) : min=0 max=255 step=1 default=64 value=0
# power_line_frequency (menu) : min=0 max=2 default=2 value=0
# white_balance_temperature (int) : min=2800 max=6500 step=1 default=4000 value=4676
# sharpness (int) : min=0 max=255 step=1 default=22 value=0
# backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0
# exposure_auto (menu) : min=0 max=3 default=3 value=3
# exposure_absolute (int) : min=3 max=2047 step=1 default=166 value=27
# exposure_auto_priority (bool) : default=0 value=0
# pan_absolute (int) : min=-36000 max=36000 step=3600 default=0 value=0
# tilt_absolute (int) : min=-36000 max=36000 step=3600 default=0 value=0
# zoom_absolute (int) : min=1 max=5 step=1 default=1 value=1
Alles anzeigen
Mit os.system( "v4l2-ctl --set-ctrl=exposure_auto=%s,exposure_auto_priority=%s ... blah" % (auto, prio, ... noch mehr blub) )
stelle ich die Parameter im Python-Skript ein, weil das wohl nicht mit Python-modulen zu machen ist (man möge mich eine Besseren belehren). Das funktioniert so auch ganz gut, doch leider tritt ein sporadischer Fehler auf:
Wenn man die Einstellungen aber mit:
os.system('sudo uvcdynctrl --set="Exposure, Auto" %s' %exposure)
os.system('sudo uvcdynctrl --set="Exposure, Auto Priority" %s' %priority)
...
ändert, tritt der Fehler nicht mehr auf. (Das muss nach meinen Recherchen irgendwas mit v4l2 zu tun haben - uvcdynctrl verwendet eine andere library: libwebcam statt libv4l2).
Was mich daran stört, obwohl es zuverlässig funktioniert, ist das mehrmalige Aufrufen von "uvcdynctrl" weil man "uvcdynctrl" immer nur einen Parameter übergeben kann.
Kennt jemand von Euch evtl. eine "elegantere" Lösung für die Kameraeinstellungen? Bin leider nirgends auf andere Möglichkeiten gestoßen (fswebcam lief leider auch nicht zuverlässig genug).
Und: ja ... vielleicht ist das nur zu perfektionistisch gedacht ....