linear_polar_off_center.py
# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2026 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de mappage polaire linéaire hors centre
#
# Cet exemple montre la reprojection de l'image à l'aide d'une transformation
# polaire linéaire centrée sur un point spécifié par l'utilisateur plutôt que sur
# le centre de l'image. Ceci est utile lorsque l'axe optique de l'objectif ne
# s'aligne pas avec le centre du capteur (par exemple un objectif fisheye monté avec
# un adaptateur décalé), afin que la transformation polaire puisse être recentrée sur le
# véritable centre optique.
#
# Passez les arguments nommés `x` et `y` pour définir le centre polaire. Les deux
# prennent par défaut le centre de l'image si omis.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Initialiser le capteur de la caméra.
csi0.pixformat(csi.RGB565) # ou csi.GRAYSCALE
csi0.framesize(csi.QQVGA) # ou csi.QVGA (ou autres)
csi0.snapshot(time=2000) # Laisser les nouveaux réglages prendre effet.
# Centrer la transformation polaire 20 pixels vers la droite et 10 pixels vers le bas
# par rapport au centre du capteur. Ajustez ces valeurs pour votre objectif.
CENTER_X_OFFSET = 20
CENTER_Y_OFFSET = 10
clock = time.clock() # Suit le FPS.
while True:
clock.tick() # Suivre les millisecondes écoulées entre les snapshots().
img = csi0.snapshot()
cx = (img.width() // 2) + CENTER_X_OFFSET
cy = (img.height() // 2) + CENTER_Y_OFFSET
img.linpolar(reverse=False, x=cx, y=cy)
print(clock.fps()) # Remarque : votre OpenMV Cam fonctionne environ deux fois moins vite lorsqu'elle est
# connectée à votre ordinateur. Le nombre d'images par seconde (FPS) devrait augmenter une fois déconnectée.