Configuración JSON persistente y gestión de referencias golden
config.json plano, y almacena cada referencia golden como un PNG ya preprocesado en una carpeta references/. Tras un corte de corriente, la Raspberry Pi arranca directamente como una estación de inspección operativa y calibrada.Un único fichero JSON como fuente única de verdad
Fija la cámara a través de V4L2
cv2.VideoCapture.set: primero autofocus off, después enfoque manual, brillo, contraste y saturación. A partir de ahí la cámara se comporta como un sensor industrial fijo, y cada pieza se captura en las mismas condiciones ópticas — la condición previa para tener umbrales estables aguas abajo.Guarda las referencias preprocesadas, no en bruto
references/ — sin recalibración, sin paradas.Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Raspberry Pi + cámara USB — cópialo libremente:
def load_config(path=CONFIG_PATH):
"""Loads config.json; if it does not exist, creates it with the defaults."""
if os.path.exists(path):
with open(path, "r", encoding="utf-8") as f:
cfg = json.load(f)
# Fills in new keys that did not exist in older versions
for section, values in DEFAULT_CONFIG.items():
cfg.setdefault(section, {})
for k, v in values.items():
cfg[section].setdefault(k, v)
return cfg
save_config(DEFAULT_CONFIG, path)
return dict(DEFAULT_CONFIG)El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Por qué JSON en lugar de una base de datos o un fichero INI?
Una estación, unas pocas decenas de parámetros, editados por un solo proceso. JSON viene incluido en Python, es legible para el soporte remoto y trivial de comparar y respaldar. Una base de datos añade trabajo de operación sin beneficio a esta escala.
¿Qué pasa si config.json falta o está corrupto?
El cargador lo recrea desde los valores de fábrica para que la estación siempre arranque. En ese caso se pierden los valores ajustados, y por eso el despliegue guarda una copia del fichero en cada cambio de producto.
¿Conviene versionar las imágenes de referencia?
Ayuda. Los PNG de references/ más config.json definen por completo el comportamiento de la estación, así que hacer commit de ambos te da una instantánea completa y restaurable de cualquier configuración validada.