v2.5.0

v2.5.0 est une version d’imagerie riche en fonctionnalités : elle ajoute find_rects(), find_circles(), get_regression() (ajustement de ligne/régression), find_number() (chiffres LeNet), les classes de flux ImageWriter / ImageReader, sensor.flush() / width() / height() et la prise en charge de pyb.RTC. Le chargement d’images s’appuie désormais sur le tampon d’image — consultez les modifications incompatibles ci-dessous.

Points forts

  • image.find_rects() — détecteur de rectangles / quadrilatères avec sortie des coins.

  • image.find_circles() — détection de cercles par transformée de Hough.

  • image.get_regression() — ajustement de ligne par moindres carrés et robuste (Theil-Sen).

  • image.find_number() — reconnaissance de chiffres LeNet.

  • ImageWriter / ImageReader — enregistrement et relecture de flux d’images.

  • Prise en charge de pyb.RTC, ainsi que sensor.flush() / sensor.width() / sensor.height().

  • Incompatible : le chargement d’images s’appuie désormais sur le tampon d’image et lève une exception si l’image est trop volumineuse — consultez les modifications incompatibles.

Nouvelles fonctionnalités

  • Détection de caractéristiques — ajout de image.find_rects() (détecteur de quadrilatères AprilTag ; objets rect avec x / y / w / h / corners / magnitude), image.find_circles() (Hough), image.get_regression() (ajustement de ligne par moindres carrés + robuste Theil-Sen) et image.find_number() (reconnaissance de chiffres LeNet), chacun accompagné de scripts d’exemple.

  • Coins des résultats — ajout d’un attribut corners aux objets résultat de QR code / AprilTag / matrice de données / code-barres.

  • Flux d’images — ajout des classes image.ImageWriter / image.ImageReader (format de fragments alignés sur 16 octets) avec les exemples image_writer.py / image_reader.py.

  • Capteur — ajout de sensor.flush() (pousse le tampon d’image vers l’IDE sans capture) et de sensor.width() / sensor.height().

  • pyb.RTC — activation de la prise en charge du RTC avec un exemple rtc.py.

  • Ajout d’une cascade de Haar pour visage de chat et d’un exemple Servo-Shield (PCA9685) ; l’outil hôte openmv-cascade.py a reçu la prise en charge du nouveau format de cascade XML OpenCV.

Autres changements et améliorations

  • Le tampon d’image a été refactorisé de sorte que les méthodes d’image copy_to_fb mettent à jour l’aperçu de l’IDE ; les chemins de HaarCascade() ne nécessitent plus de / initial (intégré ou fichier détecté automatiquement) ; l’enregistrement GIF/MJPEG prend désormais en charge le VGA (et les GIF BAYER) ; le fichier README.txt intégré a été mis à jour et le fichier de pilote openmv.inf n’est plus créé sur un système de fichiers neuf.

Corrections de bogues

Imagerie :

  • Correction de l’accumulation de votes de find_circles(), du décalage rho de get_regression() avec une ROI et d’une fuite de mémoire, de la fusion de segments de find_lines(), du moyennage d’angles de find_blobs() et de ses bornes de couleur par défaut (les moins restrictives), de la stabilité du tri des points clés ORB / de l’ordonnancement des descripteurs et du drapeau de correspondance, ainsi que du chargement bufferisé de la cascade de Haar (lectures non alignées).

Système :

  • Activation du Servo 3 (P9) de pyb (#256), correction de l’init du RTC, augmentation du délai d’expiration des caractères UART (#240) et correction du drapeau « enabled » non initialisé du tampon d’image du capteur.

Prise en charge du matériel et des cartes

  • Prise en charge de pyb.RTC et du Servo 3 (P9) de pyb ; exemple Servo-Shield (PCA9685).

Modifications incompatibles de l’API

Ruptures d’API visibles par l’utilisateur entre la v2.4.1 et la v2.5.0. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.

La modification incompatible est une modification de comportement (même API, résultat différent) — revérifiez les scripts concernés. Chaque empreinte de commit renvoie à son diff sur GitHub.

Le chargement d’images s’appuie sur le tampon d’image (comportement)

image.Image / le chargement d’images copie désormais l’image chargée dans le tampon d’image principal et lève une exception si l’image est trop volumineuse pour y tenir. Les chargements qui réussissaient auparavant dans un tampon du tas peuvent désormais échouer — assurez-vous que les images chargées tiennent dans le tampon d’image (ou gérez la nouvelle erreur).

Commits : 87d53385a

Liste de contrôle de migration

Assurez-vous que les images chargées tiennent dans le tampon d’image (ou interceptez la nouvelle erreur « image trop volumineuse ») là où vous vous appuyiez auparavant sur des chargements d’images dans le tas (la modification du chargement d’images). Tous les autres scripts fonctionnent sans changement.