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’Otsuhistogram.get_threshold() et un objet Threshold.

  • Threading — prise en charge de _thread MicroPython.

  • 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”thickness de ligne, du fill de forme (rectangle / cercle), du scale / crénage de texte, d’un mot-clé mono_space sur draw_string(), de image.draw_arrow(), et de image.draw_image() (dessin de sprite / masque).

  • Opérations mathématiques — ajout de add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (avec hmirror / vflip / mask), et remove_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 et erode() / dilate() acceptent des masques ; ajout de open() / close() / top_hat() / black_hat().

  • Filtres — ajout de cartoon, flood_fill, bilateral, laplacian, des alias blur / gaussian_blur, et de l’égalisation d’histogramme adaptative (histeq(adaptive=, clip_limit=, mask=)).

  • Statistiquesget_statistics() / get_histogram() acceptent une liste de seuils de couleur et invert ; ajout du histogram.get_threshold() d’Otsu et d’un objet Threshold.

  • CMSIS CNN — ajout de image.classify_object() avec un exemple cnn.py (remplacé par le module nn dans v3.0.0).

  • Threading — activation du module _thread MicroPython.

  • Module omv — ajout des informations de version (version_string, arch, board_type, board_id) ; activation du bus I2C4 machine et 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.h par 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 mappage gain_db / gain_db_ceiling pour les OV2640 / OV7725 / OV9650 / MT9V034, du gain excessif dans sharpen(), 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() de cpufreq, 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é.

Commits : e0e112468, fc74e70c3

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.