Files
Smartwave/orchestrateur/sensors/camera.py
T
Ninluc 7082ea3f8b
Build, push image, and notify Watchtower / build-image (push) Successful in 45s
Build, push image, and notify Watchtower / notify (push) Successful in 12s
Better camera settings + better rpompt
2026-08-23 14:32:17 +02:00

52 lines
1.6 KiB
Python

import grovepi
import math
from sensors.lock import grove_lock
from picamera2 import Picamera2, Preview
import time
picam2 = Picamera2()
# Get maximum full-sensor dimensions
sensor_format = picam2.sensor_modes[0]
max_width = sensor_format['size'][0]
max_height = sensor_format['size'][1]
camera_config = picam2.create_still_configuration(
raw={"size": (1640, 1232)},
main={"size": (1640, 1232)}
)
picam2.set_controls({
"AeEnable": False, # Disable Auto Exposure to lock settings
"ExposureTime": 60000, # 40 ms shutter time (brightens without grain)
"AnalogueGain": 2.0, # Keep gain low to eliminate sensor noise
"AwbEnable": False, # Disable Auto White Balance fluctuation
"ColourGains": (1.4, 1.2), # Balanced RGB gains for indoor warm LED
"Brightness": 0.2, # Slight boost to shadow detail
"Contrast": 1.1, # Crisp edges around metallic surfaces
"ScalerCrop": [0, 0, max_width, max_height] # Uncrop the image
})
picam2.configure(camera_config)
picam2.start()
time.sleep(2)
def preview_camera():
picam2.start_preview(Preview.DRM)
def stop_preview_camera():
picam2.stop_preview()
def take_picture():
"""Takes a picture and saves it to the file system"""
picam2.capture_file("test.jpg")
return "test.jpg"
def get_picture():
"""Returns the image bytes as base64
"""
file_path = take_picture()
with open(file_path, "rb") as f:
image_bytes = f.read()
return image_bytes