v2.8.0¶
v2.8.0 est une version massive. Elle met en service l”OpenMV Cam H7 (STM32H7) avec un encodeur JPEG matériel et les ADC/DAC H7, une énorme refonte de l’API image (épaisseur/remplissage de tracé, opérations mathématiques/binaires, de nombreux nouveaux filtres, seuillage d’Otsu), le threading MicroPython, et le module de version omv. L’ordre d’analyse des arguments Python a été figé et image.mask_ellipse() a été supprimé — lisez les changements incompatibles ci-dessous.
Points forts¶
OpenMV Cam H7 — nouvelle carte STM32H7 avec un encodeur JPEG matériel et les ADC / DAC H7.
Refonte de
image— épaisseur de ligne, remplissages de formes,draw_arrow()/draw_image(), opérations mathématiques/binaires complètes, et de nombreux nouveaux filtres.Seuillage d’Otsu —
histogram.get_threshold()et un objetThreshold.Threading — prise en charge de
_threadMicroPython.Module
omv— informations de version / de carte.Incompatible : l’ordre des arguments positionnels Python est désormais strict et
image.mask_ellipse()a été supprimé — voir les changements incompatibles.
Nouvelles fonctionnalités¶
OpenMV Cam H7 — prise en charge de la carte STM32H7 avec un encodeur JPEG matériel, l’ADC H7 et le DAC H7.
Dessin — ajout de l”
thicknessde ligne, dufillde forme (rectangle / cercle), duscale/ crénage de texte, d’un mot-clémono_spacesurdraw_string(), deimage.draw_arrow(), et deimage.draw_image()(dessin de sprite / masque).Opérations mathématiques — ajout de
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(avechmirror/vflip/mask), etremove_shadows(); les opérations de base acceptent désormais une valeur scalaire/de couleur appliquée à tous les pixels.Binaire / morphologie — un nouveau type d’image binaire et
binary(); les opérations de ligne eterode()/dilate()acceptent des masques ; ajout deopen()/close()/top_hat()/black_hat().Filtres — ajout de
cartoon,flood_fill,bilateral,laplacian, des aliasblur/gaussian_blur, et de l’égalisation d’histogramme adaptative (histeq(adaptive=, clip_limit=, mask=)).Statistiques —
get_statistics()/get_histogram()acceptent une liste de seuils de couleur etinvert; ajout duhistogram.get_threshold()d’Otsu et d’un objetThreshold.CMSIS CNN — ajout de
image.classify_object()avec un exemplecnn.py(remplacé par le modulenndans v3.0.0).Threading — activation du module
_threadMicroPython.Module
omv— ajout des informations de version (version_string,arch,board_type,board_id) ; activation du bus I2C4machineet des fonctions mathématiques spéciales (erf,gamma, …) ; ajout d’exemples de motor-shield et de nombreux nouveaux scripts d’exemple.
Autres changements et améliorations¶
L’horloge externe du capteur H7 a été abaissée à 48 MHz (meilleure qualité d’image, FPS plus faible) ; la qualité JPEG basse/haute est désormais configurable par carte (et ajustée pour le H7) ; ajout d’un cloisonnement de fonctionnalités
imlib_config.hpar carte (toutes les fonctions d’image restent activées sur le micrologiciel d’origine) ; mise à jour du MicroPython intégré.
Corrections de bogues¶
Imagerie :
Correction de
image.save()sans extension de fichier, du mappagegain_db/gain_db_ceilingpour les OV2640 / OV7725 / OV9650 / MT9V034, du gain excessif danssharpen(), du bruit de contour morphologique, d’une division par zéro dans une opération d’image, et d’un plantage par débordement de pile sur une taille de noyau de filtre trop grande (désormais une erreur propre).
Système :
Protection du tampon USB VCP avec une section atomique (corruption série, #313), correction de la connectivité USB sous Windows, montage du système de fichiers de la mémoire flash interne si la carte SD échoue, de la valeur PLLP de
set_frequency()decpufreq, et d’un bogue de programmation de micrologiciel du programme d’amorçage.
Matériel et prise en charge des cartes¶
OpenMV Cam H7 (STM32H7) — nouvelle carte avec un encodeur JPEG matériel et les ADC / DAC H7.
machine— activation du bus I2C4.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v2.7.0 et v2.8.0. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.
Les deux changements incompatibles sont mineurs et n’affectent que les scripts qui utilisaient la fonctionnalité concernée. Chaque hachage de commit renvoie à son diff sur GitHub.
L’ordre des arguments positionnels Python est désormais strict (mineur)¶
L’analyse des arguments à travers les modules C Python (image / sensor / fir / gif / lcd / mjpeg) lit désormais les arguments positionnels avant les mots-clés et fige l’ordre positionnel. Combiné avec les nouveaux arguments par mot-clé sur les méthodes de dessin (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() gagnant thickness / fill / scale / size), le code qui passait des paramètres dans le désordre de manière positionnelle — ou qui passait une color positionnelle après l’un des nouveaux arguments — doit utiliser des arguments par mot-clé ou l’ordre positionnel documenté.
image.mask_ellipse() supprimé (mineur)¶
image.mask_ellipse() a été supprimé. Les scripts qui l’appelaient doivent supprimer l’appel ou utiliser une image de ROI / masque explicite à la place.
Commits : d7159fba3
Liste de contrôle de migration¶
Passez les arguments par mot-clé (ou dans l’ordre positionnel documenté), en particulier color sur les méthodes de dessin (le changement d’ordre des arguments), et supprimez les appels à image.mask_ellipse() (la suppression de mask_ellipse). Tous les autres scripts fonctionnent sans modification.