Hey ho.
Ich habe jetzt mal ein bisschen rumgespielt und mit meinen laienhaften Python Kenntnissen einen Code zusammengebaut.
Leider stehe ich dennoch vor dem Problem, dass ich bei veränderten Lichtverhältnissen keine richtige Belichtung hinbekomme.
Wenn ich mit nem festen "shutter_speed" arbeite, muss die Belichtung genau passen. Das ist mit ner Tabelle nicht wirklich praktikabel. Ich kann ja schlecht 5000 Vorgaben machen. Und eine Dynamik ist da leider nicht vorhanden. Noch ne Idee wie ich da irgendwie Ranges reinbekomme?
Python: capture.py
from picamera import PiCamera
from time import sleep
from fractions import Fraction
import board
import adafruit_bh1750
from datetime import datetime
from config import *
#I2C Bus initialisieren
i2c = board.I2C()
#Lichtsensor auslesen
bh1750 = adafruit_bh1750.BH1750(i2c)
lux = bh1750.lux
format_lux = "{:.2f}".format(lux)
light_map = light_map[lux]; #Wir ermitteln die Werte aus dem importierten Settings Dictonary
# Bild von der Kamera holen
camera = PiCamera(
resolution=(2592, 1944), #Auflösung festlegen
framerate=Fraction(1, 6), #Framerate für video festlegen
sensor_mode=3 #Sensor mode 3 (volle Auflösung)
)
camera.shutter_speed = light_map['shutter_speed'] #Belichtungszeit aus der Config sezen
camera.iso = light_map['iso'] #ISO Wert aus der Config setzen
sleep(light_map['warmup']) #dem Sensor aufwärmzeit geben
camera.exposure_mode = 'off' #gemessene Werte (gains und AWB) locken
camera.capture('image.jpg') #Bild abspeichern
Alles anzeigen
Python: config.py
from range_key_dict import RangeKeyDict
light_map = RangeKeyDict({
(0, 100): {
"shutter_speed" : 5000000,
"iso" : 800,
"warmup" : 3
},
(100, 500): {
"shutter_speed" : 500000,
"iso" : 400,
"warmup" : 2
},
(500, 1000): {
"shutter_speed" : 10000,
"iso" : 100,
"warmup" : 1
},
(1000, 10000): {
"shutter_speed" : 5000,
"iso" : 100,
"warmup" : 0.5
},
(1000, 100000): {
"shutter_speed" : 500,
"iso" : 100,
"warmup" : 0.3
}
})
Alles anzeigen