sensor_manual_gain_control.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Contrôle manuel du gain du capteur
#
# Cet exemple présente comment contrôler
# le gain manuellement plutôt que de laisser le contrôle automatique du gain s'exécuter.

# Quelle est la différence entre le contrôle du gain et celui de l'exposition ?
#
# En augmentant le temps d'exposition de l'image, vous obtenez plus de
# lumière sur la caméra. Cela vous donne le meilleur rapport signal/bruit. Vous
# voulez en général toujours augmenter le temps d'exposition... sauf que, lorsque vous
# augmentez le temps d'exposition, vous diminuez la fréquence d'images maximale possible
# et si quelque chose bouge dans l'image, celle-ci commencera à devenir plus floue avec un
# temps d'exposition plus élevé. Le contrôle du gain permet d'augmenter la sortie par
# pixel à l'aide de multiplicateurs analogiques et numériques... cependant, cela amplifie
# également le bruit. Il est donc préférable de laisser l'exposition augmenter autant que possible
# puis d'utiliser le contrôle du gain pour combler le reste.

import csi
import time

# Modifiez cette valeur pour ajuster le gain. Essayez 10.0/0/0.1/etc.
GAIN_SCALE = 1.0

csi0 = csi.CSI()
csi0.reset()  # Réinitialiser et initialiser le capteur.
csi0.pixformat(csi.RGB565)  # Définir le format de pixel sur RGB565 (ou GRAYSCALE)
csi0.framesize(csi.QVGA)  # Définir la taille de l'image sur QVGA (320x240)

# Afficher le gain initial à des fins de comparaison.
print("Initial gain == %f db" % csi0.gain_db())

csi0.snapshot(time=2000)  # Attendre que les réglages prennent effet.
clock = time.clock()  # Créer un objet horloge pour suivre le FPS.

# Vous devez désactiver le contrôle automatique de l'exposition et la balance des blancs automatique
# sinon ils modifieront l'exposition de l'image pour annuler tout réglage de gain
# que vous avez mis en place...
csi0.auto_exposure(False)
csi0.auto_whitebal(False)
# Il faut laisser le temps aux réglages ci-dessus de prendre effet...
csi0.snapshot(time=500)

current_gain_in_decibels = csi0.gain_db()
print("Current Gain == %f db" % current_gain_in_decibels)

# Le contrôle automatique du gain (AGC) est activé par défaut. Appeler la fonction ci-dessous
# désactive le contrôle automatique du gain du capteur. L'argument supplémentaire « gain_db »
# remplace alors la valeur de gain automatique une fois l'AGC désactivé.
csi0.auto_gain(False, gain_db=current_gain_in_decibels * GAIN_SCALE)

print("New gain == %f db" % csi0.gain_db())
# csi0.gain_db() renvoie la valeur exacte du gain du capteur de la caméra en décibels.
# Cependant, cette valeur peut différer de celle demandée car
# le code du capteur convertit le gain en une petite et une grande valeur de gain qui
# ne peuvent pas accepter toutes les valeurs possibles...

# Si vous souhaitez réactiver le gain automatique, faites : csi0.auto_gain(True)
# Notez que le capteur de la caméra modifiera alors le gain comme il l'entend.

# En faisant : csi0.auto_gain(False)
# Désactive simplement la mise à jour de la valeur de gain mais ne modifie pas le gain
# que le capteur de la caméra a déterminée comme étant bonne.

while True:
    clock.tick()  # Mettre à jour l'horloge FPS.
    img = csi0.snapshot()  # Prendre une photo et renvoyer l'image.
    print(clock.fps())  # Remarque : l'OpenMV Cam tourne environ deux fois moins vite lorsqu'elle est connectée
    # à l'IDE. Le FPS devrait augmenter une fois déconnectée.

results matching ""

    No results matching ""