52 lines
1.6 KiB
Python
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
|
|
|