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 quesensor.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 avecx/y/w/h/corners/magnitude),image.find_circles()(Hough),image.get_regression()(ajustement de ligne par moindres carrés + robuste Theil-Sen) etimage.find_number()(reconnaissance de chiffres LeNet), chacun accompagné de scripts d’exemple.Coins des résultats — ajout d’un attribut
cornersaux 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 exemplesimage_writer.py/image_reader.py.Capteur — ajout de
sensor.flush()(pousse le tampon d’image vers l’IDE sans capture) et desensor.width()/sensor.height().pyb.RTC— activation de la prise en charge du RTC avec un exemplertc.py.Ajout d’une cascade de Haar pour visage de chat et d’un exemple Servo-Shield (PCA9685) ; l’outil hôte
openmv-cascade.pya 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_fbmettent à jour l’aperçu de l’IDE ; les chemins deHaarCascade()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 fichierREADME.txtintégré a été mis à jour et le fichier de piloteopenmv.infn’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 deget_regression()avec une ROI et d’une fuite de mémoire, de la fusion de segments defind_lines(), du moyennage d’angles defind_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#
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.