csi — capteurs de caméra¶
Le module csi est l’interface moderne et orientée objet vers le ou les capteurs de la caméra d’une OpenMV Cam. Chaque capteur physique est représenté par une instance de CSI, de sorte que les cartes d’imagerie multispectrale qui associent un capteur couleur à un capteur thermique ou événementiel peuvent piloter chacun d’eux indépendamment en passant un cid différent au constructeur. Les caméras à capteur unique se contentent d’instancier un seul CSI.
Un objet CSI détient l’intégralité de la configuration du capteur – format de pixel, taille de trame / fenêtre, exposition / gain / balance des blancs, miroir et retournement matériels, mire de barres de couleur, horloge de fréquence d’images, ROI pour l’exposition automatique, et commandes ioctl spécifiques à la puce. Les trames sont capturées avec CSI.snapshot(), qui renvoie une image.Image adossée au tampon d’image.
Ce module remplace l’ancien module sensor (qui exposait les mêmes fonctionnalités sous forme de fonctions au niveau du module liées à un unique capteur caché). Le nouveau code devrait utiliser CSI.
Exemple d’utilisation
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Utilisation avec asyncio¶
La boucle CSI.snapshot() bloquante ci-dessus ne coopère pas avec la boucle d’événements asyncio – pendant que snapshot attend la trame suivante, toutes les autres coroutines du programme sont gelées. Pour permettre à une boucle de capture de coexister avec d’autres travaux concurrents (un client UART, une surveillance de bouton, une tâche réseau), enveloppez CSI dans un petit adaptateur qui transforme snapshot en une coroutine compatible avec await en interrogeant snapshot(blocking=False) et en rendant la main à la boucle d’événements entre les vérifications
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ transmet tous les autres attributs (reset, pixformat, framesize, les réglages du capteur) au CSI sous-jacent, de sorte que le wrapper constitue un remplacement direct. Le premier appel non bloquant démarre également la capture DMA de la caméra si elle n’était pas déjà en cours, donc aucune amorce supplémentaire n’est nécessaire.
Une boucle de capture s’intègre alors dans un programme asyncio plus vaste comme une simple coroutine supplémentaire
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
Le réglage framebuffers reste important dans cette configuration – le mode à tampon unique fait que snapshot(blocking=False) renvoie None jusqu’à ce que la trame suivante soit capturée, tandis que le double ou triple tampon lisse cela de sorte que le wrapper trouve généralement une trame en tampon dès le premier sondage. Consultez la section finale AsyncCSI du tutoriel asyncio pour la démonstration complète.
classe CSI – Interface du capteur de caméra¶
La classe CSI est utilisée pour contrôler un capteur de caméra.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Crée un objet pour dialoguer avec un capteur de caméra. Sur les cartes équipées de plusieurs capteurs, l’objet CSI particulier peut être sélectionné en passant un
cidtel quecsi.LEPTONpour sélectionner un module de capteur FLIR Lepton. Sicidvaut -1, le capteur principal est sélectionné (généralement un module de caméra couleur sur les cartes multi-capteurs).Si
delaysvautFalse, tous les délais de stabilisation du pilote csi sont désactivés. Par défaut, le pilote du capteur temporise après une réinitialisation / un changement de mode afin d’éviter que des trames corrompues ne soient renvoyées parCSI.snapshot. Désactiver les délais vous permet de regrouper les mises à jour et d’appliquer un unique délai à la fin avant d’appelerCSI.snapshot.Si
fflushvautFalse, le vidage automatique du tampon d’image mentionné dansCSI.framebuffersest désactivé. Cela supprime toute limite de temps sur les trames présentes dans la file FIFO du tampon d’image.streamdétermine si ce CSI est la source de flux envoyée à l’IDE. SiNone(par défaut), le CSI devient la source de flux uniquement s’il s’agit du capteur principal (non auxiliaire). PassezTruepour forcer ce CSI à être la source de flux, ou toute valeur fausse pour laisser inchangée la source de flux existante.Méthodes¶
- reset(hard: bool = True) None¶
Initialise le capteur de caméra. Effectue une réinitialisation matérielle en basculant la broche GPIO du signal RESET vers le module de caméra si
hardvautTrue.harddoit être mis à faux lors de la réinitialisation de capteurs de caméra auxiliaires qui partagent la même broche GPIO du signal RESET que le module principal.
- shutdown(enable: bool) None¶
Place la caméra dans un mode de consommation plus faible que le sommeil (mais la caméra doit être réinitialisée à son réveil).
- flush() None¶
Copie le contenu actuel du tampon d’image vers l’aperçu de l’IDE. Appelez ceci après le dernier
CSI.snapshotsi le script se termine, afin que l’IDE affiche la dernière trame.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Prend une photo à l’aide de la caméra et renvoie un objet
image.Image.Si
timeet/ouframesest passé, snapshot bloque pendant le nombre de millisecondestimeindiqué et/ou jusqu’à ce queframestrames soient capturées depuis la caméra. Les deux arguments peuvent être utilisés en même temps. Une foistimeet/ouframesécoulé, snapshot renvoieNone.blockingpeut valoirFalsepour activer un comportement non bloquant qui fera que snapshot renvoieNonelorsque l’image suivante de la caméra n’est pas prête, au lieu d’attendre.imagepeut être un autre objetimage.Imageà mettre à jour avec la nouvelle image capturée depuis la caméra, au lieu de renvoyer un nouvel objetimage.Image. Le contenu précédent de l’image est écrasé par une copie profonde.Si
CSI.auto_rotationest activé, cette méthode renvoie uneimage.Imagedéjà pivotée.
- cid() int¶
Renvoie l’identifiant de puce du module de caméra. Comparez-le avec l’une des valeurs
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020oucsi.SOFTCSI.
- readable() bool¶
Renvoie
Trues’il y a une image prête à être renvoyée parCSI.snapshot, de sorte qu’un appel à snapshot ne bloquera pas.
- pixformat(pixformat: int | None = None) int | None¶
Définit le format de pixel du module de caméra à l’une des valeurs
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422oucsi.JPEG(uniquement sur l’OV2640/OV5640).Renvoie le pixformat actuel si appelée sans argument.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Définit la taille de trame du module de caméra à l’une des constantes de taille (par ex.
csi.QVGA,csi.VGA,csi.HD, etc. — voir la section des constantes).Vous pouvez également passer une taille de trame personnalisée sous la forme d’un tuple
(w, h). LorsqueCSI.snapshotest appelée, la taille de trame personnalisée sera évaluée par rapport aux règles DMA. En général, les tailles de trame doivent être un multiple de 8 pixels et/ou 16 octets.Renvoie la taille de trame actuelle si appelée sans argument.
- framerate(rate: int | None = None) int | None¶
Définit la fréquence d’images en Hz pour le module de caméra.
Renvoie la fréquence d’images actuelle si appelée sans argument.
Note
CSI.frameratefonctionne en supprimant des trames reçues par le module de caméra afin de maintenir la fréquence d’images au niveau spécifié ou en dessous. Par défaut, la caméra fonctionnera à la fréquence d’images maximale. Si cela est implémenté pour le capteur de caméra particulier,CSI.framerateréduira également la fréquence d’images du capteur en interne pour économiser de l’énergie et améliorer la qualité d’image en augmentant l’exposition du capteur.CSI.frameratepeut entrer en conflit avecCSI.auto_exposuresur certaines caméras.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Définit la résolution de la caméra sur une sous-région de la résolution actuelle.
roiest un tuple(x, y, w, h). Vous pouvez aussi passer(w, h)et la fenêtre sera centrée.Renvoie le tuple
(x, y, w, h)actuel si appelée sans argument.
- gainceiling(gainceiling: int) bool¶
Définit le plafond de gain (gainceiling) de l’image de la caméra à l’une des valeurs 2, 4, 8, 16, 32, 64 ou 128.
Renvoie
Trueen cas de succès etFalseen cas d’échec.
- brightness(brightness: int) bool¶
Définit la luminosité de l’image de la caméra.
Renvoie
Trueen cas de succès etFalseen cas d’échec.
- contrast(contrast: int) bool¶
Définit le contraste de l’image de la caméra.
Renvoie
Trueen cas de succès etFalseen cas d’échec.
- saturation(saturation: int) bool¶
Définit la saturation de l’image de la caméra.
Renvoie
Trueen cas de succès etFalseen cas d’échec.
- quality(quality: int) bool¶
Définit la qualité de compression JPEG de l’image de la caméra. 0 - 100.
Renvoie
Trueen cas de succès etFalseen cas d’échec.Note
Uniquement pour les caméras OV2640/OV5640.
- colorbar(enable: bool) bool¶
Active (
True) ou désactive (False) le mode mire de barres de couleur. Désactivé par défaut.Renvoie
Trueen cas de succès etFalseen cas d’échec.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableactive (True) ou désactive (False) le contrôle automatique de gain. La caméra démarre avec le contrôle automatique de gain activé.Si
enablevautFalse, vous pouvez définir un gain fixe en décibels avecgain_db.Si
enablevautTrue, vous pouvez définir le plafond de gain maximal en décibels avecgain_db_ceilingpour l’algorithme de contrôle automatique de gain.Note
Vous devez également désactiver la balance des blancs si vous souhaitez suivre des couleurs.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableactive (True) ou désactive (False) le contrôle automatique d’exposition. La caméra démarre avec le contrôle automatique d’exposition activé.Si
enablevautFalse, vous pouvez définir un temps d’exposition fixe en microsecondes avecexposure_us.Note
Les algorithmes d’exposition automatique de la caméra sont assez conservateurs quant à l’ampleur de l’ajustement de la valeur d’exposition et éviteront généralement de la modifier beaucoup. À la place, ils modifient fortement la valeur de gain pour s’adapter aux variations de l’éclairage.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableactive (True) ou désactive (False) la balance des blancs automatique. La caméra démarre avec la balance des blancs automatique activée.Si
enablevautFalse, vous pouvez définir un gain fixe en décibels pour les canaux rouge, vert et bleu respectivement avecrgb_gain_db.Note
Vous devez également désactiver le contrôle de gain si vous souhaitez suivre des couleurs.
- rgb_gain_db() Tuple[float, float, float]¶
Renvoie un tuple
(r, g, b)des valeurs de gain actuelles de la caméra pour le rouge, le vert et le bleu en décibels.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Définit la calibration automatique du niveau de noir (BLC) sur la caméra.
enablepassezTrueouFalsepour activer ou désactiver le BLC. Vous voudrez généralement toujours l’activer.regssi désactivé, vous pouvez définir manuellement les valeurs des registres BLC issues d’un appel précédent àCSI.blc_regs.
- blc_regs() List[int]¶
Renvoie les registres BLC du capteur sous forme de liste d’entiers. À utiliser avec
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Active (
True) ou désactive (False) le mode miroir horizontal. Désactivé par défaut.Renvoie le réglage actuel si appelée sans argument.
- vflip(enable: bool | None = None) bool | None¶
Active (
True) ou désactive (False) le mode retournement vertical. Désactivé par défaut.Renvoie le réglage actuel si appelée sans argument.
- transpose(enable: bool | None = None) bool | None¶
Active (
True) ou désactive (False) le mode transposition. Désactivé par défaut.vflip=False, hmirror=False, transpose=False -> rotation de 0 degré
vflip=True, hmirror=False, transpose=True -> rotation de 90 degrés
vflip=True, hmirror=True, transpose=False -> rotation de 180 degrés
vflip=False, hmirror=True, transpose=True -> rotation de 270 degrés
Renvoie le réglage actuel si appelée sans argument.
- auto_rotation(enable: bool | None = None) bool | None¶
Active (
True) ou désactive (False) le mode rotation automatique. Désactivé par défaut.Renvoie le réglage actuel si appelée sans argument.
Note
Cette méthode ne fonctionne que lorsque l’OpenMV Cam est équipée d’une
imuet elle est activée automatiquement.
- framebuffers(count: int | None = None) int | None¶
Définit le nombre de tampons d’image utilisés pour recevoir les données d’image. Par défaut, l’OpenMV Cam tentera d’allouer le nombre maximal de tampons d’image possible. La réallocation se produit chaque fois que
CSI.pixformat,CSI.framesizeouCSI.windowsont appelées.Un
countde 1 (tampon unique), 2 (double tampon) ou 3 (triple tampon) sélectionne le mode de capture correspondant. Passez 4 ou plus pour placer le pilote en mode FIFO vidéo oùcounttampons sont mis en file — utile pour l’enregistrement vidéo sur une carte SD. En cas de perte de trame, tous les tampons d’image sauf celui actif sont vidés afin queCSI.snapshotrenvoie toujours une trame récente.Renvoie le nombre actuel si appelée sans argument.
- special_effect(effect: int) bool¶
Définit l’effet numérique spécial (l’une des valeurs
csi.NORMALoucsi.NEGATIVE).Renvoie
Trueen cas de succès etFalseen cas d’échec.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTruepour activer,Falsepour désactiver.radirayon entier de pixels à corriger.coefpuissance de la correction.Renvoie
Trueen cas de succès etFalseen cas d’échec.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Enregistre la fonction de rappel
cbà exécuter (en contexte d’interruption) chaque fois que le module de caméra génère une nouvelle trame (mais avant que la trame ne soit reçue).cbprend un argument et reçoit l’état actuel de la broche vsync après son changement.Renvoie la fonction de rappel enregistrée si appelée sans argument. Passez tout objet non appelable pour effacer la fonction de rappel.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Enregistre la fonction de rappel
cbà exécuter (en contexte d’interruption) chaque fois que le module de caméra génère une nouvelle trame et que celle-ci est prête à être lue viaCSI.snapshot.cbne prend aucun argument. Utilisez ceci pour planifier la lecture d’une trame ultérieurement avecmicropython.schedule().Renvoie la fonction de rappel enregistrée si appelée sans argument. Passez tout objet non appelable pour effacer la fonction de rappel.
- ioctl(request: int, *args) Any¶
Exécute une requête spécifique au capteur.
requestest l’une des constantesIOCTL_*; les autres arguments positionnels et la valeur de retour dépendent de la requête. Les requêtes prises en charge sont regroupées par famille de capteurs ci-dessous.Générique (tout capteur) :
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Définit la fenêtre de lecture du capteur. Une fenêtre plus petite augmente la fréquence d’images au détriment du champ de vision.
ioctl(IOCTL_GET_READOUT_WINDOW)Renvoie la fenêtre de lecture actuelle sous forme de tuple
(x, y, w, h).ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Active (
True) ou désactive (False) le mode déclenché sur le MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Renvoie l’état actuel du mode déclenché sous forme de
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Lorsque
True, demande àframesize()d’optimiser pour le champ de vision plutôt que pour la fréquence d’images.ioctl(IOCTL_GET_FOV_WIDE)Renvoie l’état actuel de FOV-wide sous forme de
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Active (
True) ou désactive (False) le « mode nuit » faible luminosité du capteur. OV7725 et OV5640 uniquement.ioctl(IOCTL_GET_NIGHT_MODE)Renvoie l’état actuel du mode nuit sous forme de
bool.ioctl(IOCTL_GET_RGB_STATS)Renvoie un 4-tuple de statistiques brutes des canaux RGB
(r, gb, gr, b)lues depuis le capteur (généralement utilisé pour le réglage de la balance des blancs).
OV5640 FPC – mise au point automatique :
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Lance un balayage de mise au point automatique sur le module OV5640 FPC.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Met en pause un balayage de mise au point automatique en cours.
ioctl(IOCTL_RESET_AUTO_FOCUS)Réinitialise la position de mise au point automatique à sa valeur par défaut.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Bloque jusqu’à ce que le balayage de mise au point automatique en cours se termine.
timeout_msvaut 5000 par défaut si omis.
FLIR Lepton :
ioctl(IOCTL_LEPTON_GET_WIDTH)Renvoie la largeur de l’image Lepton en pixels.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Renvoie la hauteur de l’image Lepton en pixels.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Renvoie le type du Lepton (radiométrique ou non) sous forme d’entier.
ioctl(IOCTL_LEPTON_GET_REFRESH)Renvoie la fréquence de rafraîchissement du Lepton en Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Renvoie la résolution ADC du Lepton en bits.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Exécute une commande du SDK FLIR Lepton.
cmdest l’identifiant de commande 16 bits défini par le SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Écrit un attribut du SDK Lepton.
attr_idest l’identifiant d’attribut 16 bits ;payloadest unbytes/bytearraydont la longueur doit être un multiple de 16 bits.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Lit un attribut du SDK Lepton.
attr_idest l’identifiant d’attribut 16 bits ;wordsest le nombre de mots de 16 bits à lire. Renvoie unbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Renvoie la température du plan focal (focal-plane-array) du Lepton en degrés Celsius.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Renvoie la température auxiliaire du Lepton en degrés Celsius.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Bascule le Lepton entre la sortie AGC et la sortie de température directe.
measurement_enabled=Trueactive la sortie de température directe. L’indicateur optionnelhigh_temp_enabledsélectionne la plage de hautes températures.ioctl(IOCTL_LEPTON_GET_MODE)Renvoie un 2-tuple
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Définit la plage de température mappée sur
0..255lorsque le mode mesure est activé.ioctl(IOCTL_LEPTON_GET_RANGE)Renvoie la plage
(min_celsius, max_celsius)actuelle.
Himax HM01B0 – détection de mouvement :
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Active (
True) ou désactive (False) le bloc de détection de mouvement intégré au capteur HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Définit la fenêtre de détection de mouvement sur le HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Définit le seuil de détection de mouvement (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Efface le verrou d’interruption de détection de mouvement.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Active (
True) ou désactive (False) l’oscillateur interne du HM01B0.
Prophesee GENX320 – capteur événementiel :
ioctl(IOCTL_GENX320_SET_BIASES, preset)Applique un préréglage de polarisation.
presetest l’une des constantesGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Définit une polarisation unique.
biasest l’une des constantesGENX320_BIAS_*;valueest le réglage entier.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Configure le filtre anti-scintillement.
enableest un booléen ; les arguments de fréquence optionnels définissent la bande passante du filtre.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Configure le filtre de contraste spatio-temporel.
modeest l’une des constantesGENX320_STC_*; jusqu’à deux autres arguments sont spécifiques au mode.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Bascule le capteur entre les modes trame et événementiel.
modeest l’une des constantesGENX320_MODE_*. Pour le mode événementiel,evt_resest la longueur de l’axe des lignes du tampon d’événements passé àIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Lit les événements dans
buf, unndarrayuint16de forme(EVT_res, 6)oùEVT_resest une puissance de deux comprise entre 1024 et 65536. Les colonnes sont :[0]– type d’événement (PIX_OFF_EVENT/PIX_ON_EVENT/ déclencheur).[1]– secondes.[2]– millisecondes.[3]– microsecondes.[4]– coordonnéex.[5]– coordonnéey.
Renvoie le nombre d’événements écrits.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Renvoie une
image.Imagecontenant la trame d’événements brute du GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Désactive les pixels dont le bruit dépasse
sigmaécarts-types par rapport à la distribution normale.iterationsest le nombre entier de passes de calibration. Renvoie le nombre de pixels désactivés.
- color_palette(palette: int | None = None) int | None¶
Définit la palette de couleurs à utiliser pour des opérations telles que la conversion des niveaux de gris du FLIR Lepton en RGB565 ou la visualisation des événements du GENX320. L’une des valeurs
image.PALETTE_RAINBOW,image.PALETTE_IRONBOW, et (lorsque pris en charge)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKouimage.PALETTE_EVT_LIGHT.Renvoie le réglage actuel si appelée sans argument.
Fonctions¶
Constantes¶
- csi.BINARY: int¶
Format de pixel BINARY (bitmap). Chaque pixel fait 1 bit. Utile pour le stockage de masques ; peut être utilisé avec
image.Image().
- csi.RGB565: int¶
Format de pixel RGB565. Chaque pixel fait 16 bits (5 bits de rouge, 6 bits de vert, 5 bits de bleu).
- csi.YUV422: int¶
Format de pixel YUV422. Chaque pixel est stocké sous la forme d’une valeur Y de niveaux de gris 8 bits suivie de valeurs de couleur U/V 8 bits alternées partagées entre deux valeurs Y (Y1, U, Y2, V, …). Seules certaines méthodes de traitement d’image fonctionnent avec YUV422.
- csi.JPEG: int¶
Mode JPEG. Le module de caméra produit des images JPEG compressées. Utilisez
CSI.qualitypour contrôler la qualité JPEG. Fonctionne uniquement pour les caméras OV2640/OV5640.
- csi.NORMAL: int¶
Mode normal pour
CSI.special_effect.
- csi.NEGATIVE: int¶
Mode négatif pour
CSI.special_effect.
- csi.SXGA: int¶
Résolution 1280x1024 pour le capteur de caméra. Fonctionne uniquement pour les caméras OV2640/OV5640.
- csi.UXGA: int¶
Résolution 1600x1200 pour le capteur de caméra. Fonctionne uniquement pour les caméras OV2640/OV5640.
- csi.FHD: int¶
Résolution 1920x1080 pour le capteur de caméra. Fonctionne uniquement pour la caméra OV5640.
- csi.QHD: int¶
Résolution 2560x1440 pour le capteur de caméra. Fonctionne uniquement pour la caméra OV5640.
- csi.QXGA: int¶
Résolution 2048x1536 pour le capteur de caméra. Fonctionne uniquement pour la caméra OV5640.
- csi.WQXGA: int¶
Résolution 2560x1600 pour le capteur de caméra. Fonctionne uniquement pour la caméra OV5640.
- csi.WQXGA2: int¶
Résolution 2592x1944 pour le capteur de caméra. Fonctionne uniquement pour la caméra OV5640.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Récupère l’état du mode déclenché pour le MT9V034. Voir
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Permet à
CSI.framesized’optimiser pour le champ de vision plutôt que pour les FPS. VoirCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Renvoie si
CSI.framesizeoptimise pour le champ de vision plutôt que pour les FPS. VoirCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Déclenche la mise au point automatique sur le module de caméra OV5640 FPC. Voir
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Met en pause la mise au point automatique (en cours d’exécution) pour le module de caméra OV5640 FPC. Voir
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Réinitialise la mise au point automatique à sa valeur par défaut pour le module de caméra OV5640 FPC. Voir
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Attend la fin de la mise au point automatique sur le module de caméra OV5640 FPC. Voir
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Active ou désactive le mode nuit. Réduit la fréquence d’images pour augmenter dynamiquement l’exposition. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Renvoie la largeur de résolution de l’image du FLIR Lepton en pixels. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Renvoie la hauteur de résolution de l’image du FLIR Lepton en pixels. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Renvoie le type du FLIR Lepton (radiométrique ou non). Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Renvoie la fréquence de rafraîchissement du FLIR Lepton en Hz. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Renvoie la résolution ADC du FLIR Lepton en bits. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Définit un attribut du FLIR Lepton issu du SDK FLIR Lepton. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Récupère un attribut du FLIR Lepton issu du SDK FLIR Lepton. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Récupère la température du FPA du FLIR Lepton en Celsius. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Récupère la température AUX du FLIR Lepton en Celsius. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Place le pilote du FLIR Lepton dans un mode où chaque pixel est une valeur de température. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Renvoie si le mode mesure est activé pour le capteur FLIR Lepton. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Définit la plage de température mappée sur les valeurs de pixel en mode mesure. Voir
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Renvoie la plage de température utilisée en mode mesure. Voir
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Contrôle l’interruption de détection de mouvement sur le HM01B0. Voir
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_WINDOW: int¶
Définit la fenêtre de détection de mouvement sur le HM01B0. Voir
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Définit le seuil de détection de mouvement sur le HM01B0. Voir
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_CLEAR: int¶
Efface l’interruption de détection de mouvement sur le HM01B0. Voir
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Définit les polarisations du capteur GENX320 sur l’un des préréglages
GENX320_BIASES_*. VoirCSI.ioctl. AprèsCSI.reset, le pilote appliquecsi.GENX320_BIASES_LOW_NOISE, et noncsi.GENX320_BIASES_DEFAULT— utilisez cet ioctl pour basculer vers un préréglage différent lorsque l’application nécessite plus de sensibilité ou de bande passante.
- csi.GENX320_BIASES_DEFAULT: int¶
Valeurs par défaut de la fiche technique du GenX320 — équilibre entre sensibilité, bruit et bande passante pour les scènes générales.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Réglé pour les conditions de faible luminosité — les deux seuils de contraste sont assouplis pour une sensibilité accrue, FO abaissé, HPF désactivé afin que les changements lents de luminosité soient toujours enregistrés.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Réglé pour le suivi de LED clignotantes à fort contraste (marqueurs actifs) — les seuils de contraste sont relevés afin que seules les transitions nettes déclenchent, FO et HPF poussés au maximum pour maximiser la bande passante et rejeter la dérive ambiante lente, REFR=0 afin que chaque front de clignotement soit capturé.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Valeur par défaut du pilote — sensibilité plus faible que
DEFAULT(seuils de contraste relevés) et un FO plus bas pour moins d’activité de bruit de fond. Idéal pour les scènes statiques ou lentes où les faux événements domineraient.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Réglé pour les scènes à mouvement rapide — FO plus élevé pour une plus large bande passante des pixels, HPF plus élevé pour rejeter les changements lents, REFR plus élevé pour un temps mort plus long après chaque événement afin que la lecture ne sature pas.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Définit une polarisation unique du capteur GENX320 sur une valeur DAC. Passez une constante
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFoucsi.GENX320_BIAS_REFR) et une valeur DAC entière. Chaque polarisation est indépendante — appelez cet ioctl à plusieurs reprises pour ajuster uniquement les polarisations dont vous avez besoin après avoir appliqué un préréglage. VoirCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Seuil de contraste du comparateur négatif — contrôle de combien un pixel doit s’assombrir avant qu’un
csi.PIX_OFF_EVENTne se déclenche. Valeur plus basse = plus sensible (plus d’événements).
- csi.GENX320_BIAS_DIFF_ON: int¶
Seuil de contraste du comparateur positif — contrôle de combien un pixel doit s’éclaircir avant qu’un
csi.PIX_ON_EVENTne se déclenche. Valeur plus basse = plus sensible (plus d’événements).
- csi.GENX320_BIAS_FO: int¶
Fréquence de coupure passe-bas du pixel — arbitre entre la bande passante du pixel (vitesse/latence) et l’activité de bruit de fond. Valeur plus élevée = réponse du pixel plus rapide, plus de bruit.
- csi.GENX320_BIAS_HPF: int¶
Fréquence de coupure passe-haut du pixel — rejette les changements lents de luminosité. Valeur plus élevée = changements plus lents filtrés (seules les transitions rapides sont enregistrées).
- csi.GENX320_BIAS_REFR: int¶
Période réfractaire du pixel — temps mort après qu’un pixel a émis un événement, durant lequel il ne peut pas se déclencher à nouveau. Valeur plus élevée = temps mort plus long, moins d’événements provenant d’un pixel actif.
- csi.IOCTL_GENX320_SET_AFK: int¶
Définit le filtre anti-scintillement (AFK) du GENX320, qui rejette les événements provenant de pixels qui basculent à une bande de fréquence périodique (éclairage fluorescent, écrans pilotés par LED, etc.). Passez
enable(1 pour activer, 0 pour désactiver) et, lors de l’activation, les bords de bande en hertz :(enable, freq_low_hz, freq_high_hz). VoirCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Définit le mode du filtre de contraste spatio-temporel (STC) du GENX320. Passez une constante
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) suivie du ou des seuils requis par le mode (en millisecondes). VoirCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Conserve le deuxième événement d’une rafale ; supprime le premier événement et tous les événements ultérieurs. Prend un paramètre,
stc_thresholden millisecondes — les événements survenant dans cette fenêtre après un événement précédent sur le même pixel sont considérés comme faisant partie de la même rafale.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Conserve le premier événement d’une rafale ; supprime les événements suivants sur le même pixel jusqu’à ce que
trail_thresholdse soit écoulé. Prend un paramètre,trail_thresholden millisecondes.
- csi.GENX320_STC_TRAIL: int¶
Conserve le premier événement d’une rafale plus les fronts suivants — combine
csi.GENX320_STC_ONLYetcsi.GENX320_STC_TRAIL_ONLY. Prend deux paramètres,stc_thresholdettrail_threshold(tous deux en ms) ; le capteur requiert que les deux restent dans un rapport d’environ 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Définit le mode de fonctionnement du GENX320. Passez
csi.GENX320_MODE_HISTOpour l’histogramme d’événements intégré à la puce (la caméra se comporte comme une caméra à niveaux de gris classique à la fréquence d’images configurée) oucsi.GENX320_MODE_EVENTsuivi de la longueur de l’axe des lignes de l”ndarrayd’événements (une puissance de deux comprise entre 1024 et 65536) pour le flux d’événements brut. VoirCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Mode histogramme — les événements sont accumulés sur la puce dans des cases par pixel et rapportés sous forme de trame en niveaux de gris 320x320 à la fréquence configurée (~20-350 FPS). La caméra se présente comme une caméra classique, de sorte que toutes les routines standard de traitement d’image fonctionnent directement.
- csi.GENX320_MODE_EVENT: int¶
Mode événementiel — contourne l’histogramme intégré à la puce et diffuse les événements bruts dans un
ndarraynumpy avec des horodatages à la microseconde, pour les applications qui nécessitent un détail temporel complet plutôt qu’une trame pré-classée.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Lit les événements bruts dans un
ndarrayuint16 de forme(EVT_res, 6)(avecEVT_rescorrespondant à la taille de tampon passée àcsi.IOCTL_GENX320_SET_MODE). Les colonnes sont[0]type d’événement (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]horodatage en secondes,[2]millisecondes,[3]microsecondes,[4]coordonnée X (0-319),[5]coordonnée Y (0-319). Renvoie le nombre d’événements écrits dans le tampon, laissant intactes les lignes plus anciennes au-delà de ce nombre. VoirCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Désactive automatiquement les pixels chauds — les pixels qui se déclenchent de manière parasite même sur une scène statique. Le pilote construit un comptage de coups par pixel 320x320, calcule la moyenne et l’écart-type, et désactive tout pixel dont le comptage dépasse
mean + sigma * stddev. Passez un budget de comptage d’événements (événements à comptabiliser avant le calcul des statistiques — plus élevé = estimation plus fiable, plus lente ; ~10000 est une bonne valeur par défaut) et un flottant sigma (plus bas = plus agressif, ~0,5 par défaut). Renvoie le nombre de pixels désactivés. Pointez d’abord la caméra vers une scène statique afin que les événements liés au mouvement ne soient pas comptabilisés contre des pixels qui sont en réalité corrects. VoirCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Renvoie une
image.Imagede trame d’événements brute du GENX320, avec les événements encore dans l’encodage compact natif de la puce — utile si vous souhaitez transférer le flux brut vers un PC pour un décodage hors ligne plutôt que de le traiter sur la caméra. VoirCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
Type d’événement GENX320 (colonne
[0]) — un pixel a détecté une diminution de luminosité (le seuil de contraste négatif a été franchi). Les colonnes[4]/[5]portent les coordonnées X/Y du pixel.
- csi.PIX_ON_EVENT: int¶
Type d’événement GENX320 (colonne
[0]) — un pixel a détecté une augmentation de luminosité (le seuil de contraste positif a été franchi). Les colonnes[4]/[5]portent les coordonnées X/Y du pixel.
- csi.RST_TRIGGER_RISING: int¶
Type d’événement GENX320 (colonne
[0]) — déclencheur de réinitialisation de pixel, front montant. X/Y ne sont pas utilisés. Non généré par le micrologiciel pour le moment.
- csi.RST_TRIGGER_FALLING: int¶
Type d’événement GENX320 (colonne
[0]) — déclencheur de réinitialisation de pixel, front descendant. X/Y ne sont pas utilisés. Non généré par le micrologiciel pour le moment.
- csi.EXT_TRIGGER_RISING: int¶
Type d’événement GENX320 (colonne
[0]) — la broche de déclenchement externe du capteur a vu un front montant. L’entrée de déclenchement externe du GENX320 est câblée à la ligne de synchronisation de trame de la caméra, également routée vers P10 sur le processeur et le connecteur de broches. X/Y ne sont pas utilisés.
- csi.EXT_TRIGGER_FALLING: int¶
Type d’événement GENX320 (colonne
[0]) — la broche de déclenchement externe du capteur a vu un front descendant. L’entrée de déclenchement externe du GENX320 est câblée à la ligne de synchronisation de trame de la caméra, également routée vers P10 sur le processeur et le connecteur de broches. X/Y ne sont pas utilisés.