v1.1.0

v1.1.0 est la version fondatrice de l’architecture : elle abandonne les premiers modules de périphériques personnalisés au profit des modules intégrés standard de MicroPython, déplace l’API d’imagerie dans le module image et l’horloge de fréquence d’images dans time, et ajoute des Haar Cascades intégrées, get_pixel() / set_pixel(), la prise en charge de la carte OpenMV 2 et le débogage USB-CDC. Il s’agit d’une version fortement non rétrocompatible et définissant l’API — lisez les changements non rétrocompatibles ci-dessous.

Points forts

  • Modules intégrés de MicroPython — les modules personnalisés gpio / led / spi / socket / wlan / uart / file / select ont été supprimés au profit des modules pyb / machine de MicroPython.

  • Module imageImage() / HaarCascade() / les descripteurs se trouvent désormais dans le module image.

  • time.clock — l’horloge de fréquence d’images a été déplacée dans le module time.

  • Haar Cascades intégréesHaarCascade("frontalface") / HaarCascade("eye") (aucun fichier nécessaire).

  • Prise en charge de la carte OpenMV 2 et débogage USB-CDC.

  • Non rétrocompatible : la structure des modules a été redéfinie — voir les changements non rétrocompatibles.

Nouvelles fonctionnalités

  • Image — ajout de Image.get_pixel(x, y) / set_pixel() et de l’accès aux pixels par indice img[i] ; Haar Cascades intégrées en mémoire flash (HaarCascade("frontalface") / HaarCascade("eye")) et un mot-clé stages= pour limiter les étapes de cascade ; draw_string() fonctionne sur les images en niveaux de gris.

  • Sensor — ajout de sensor.set_colorbar(), sensor.set_saturation() et de la taille de trame QQVGA2.

  • mlxmlx.read(type) avec sortie mlx.RAINBOW / mlx.GRAYSCALE.

  • Débogage — implémentation du débogage via USB CDC, d’une requête fw_version() du micrologiciel, d’un micrologiciel par carte (OpenMV 1 / OpenMV 2) et de scripts d’autotest / mire de couleurs ; les erreurs fatales/d’analyse sont consignées en mémoire flash.

Autres changements et améliorations

  • Le manque de mémoire lève désormais MemoryError au lieu d”OSError ; les scripts s’exécutent avec relance d’exception afin que les erreurs s’affichent au lieu de provoquer un plantage ; le débit en bauds série est configurable (par défaut 921600) ; un système de fichiers en mémoire flash plus grand ; l’horloge pixel du capteur a été abaissée à 54 MHz pour la stabilité de la capture ; sensor.reset() repose uniquement sur une réinitialisation logicielle du capteur.

Corrections de bogues

  • Correction de la correspondance de modèles, de find_features() répétant le premier objet, de l’accès atomique aux registres SCCB/I2C, de la détection de puce de carte SD, du mappage des broches I2C logiciel, de la précision de fast_cbrtf / des couleurs LAB, et de l’utilisation mémoire des images intégrales / du filtre médian sur l’OpenMV 1 / 2.

Prise en charge du matériel et des cartes

  • Prise en charge de la carte OpenMV 2 (STM32F427) (et conception matérielle de l’OpenMV 3) ; MCO utilisé comme horloge du capteur sur l’OpenMV 2.

Changements d’API non rétrocompatibles

Ruptures d’API visibles par l’utilisateur entre v1.0.3-beta et v1.1.0. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.

Chaque changement est étiqueté selon son impact :

  • majeur — affecte la plupart des scripts qui utilisaient la fonctionnalité ; vous devrez porter votre code.

  • comportement — même API, résultats différents ; revérifiez les scripts ajustés.

Les changements sont regroupés par impact dans cet ordre. Si vous voulez simplement porter votre code, passez à la liste de contrôle de migration à la fin. Chaque hash de commit renvoie à son diff sur GitHub.

Modules de périphériques personnalisés supprimés (majeur)

Les premiers modules personnalisés clock / file / gpio / led / select / socket / spi / wlan / uart ont été supprimés au profit des périphériques intégrés pyb / machine de MicroPython. Portez vos scripts vers les équivalents MicroPython standard (par ex. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commits : 6d2fafa94

API d’imagerie déplacée dans le module image (majeur)

Image(), HaarCascade() et les fonctions d’enregistrement/chargement de descripteurs ne sont plus des fonctions intégrées brutes — elles résident dans le nouveau module image. Les scripts doivent faire import image et utiliser image.Image / image.HaarCascade().

Commits : 54288c535

Horloge de fréquence d’images déplacée dans time (majeur)

Le module autonome clock a été supprimé ; l’horloge de fréquence d’images réside désormais dans time. Utilisez import time et clock = time.clock() — l’objet renvoyé fournit toujours .tick() / .fps() / .avg() / .reset().

Commits : a8928ca3b

/flash et /sd ne sont plus ajoutés à sys.path (comportement)

Les étiquettes de volume / le répertoire racine ont été corrigés et /flash et /sd ne sont plus ajoutés automatiquement à sys.path. Les scripts qui importaient des modules auxiliaires par nom brut depuis ces emplacements doivent ajouter le chemin explicitement (ou placer les modules là où ils sont trouvés).

Commits : 09e77b5da

Liste de contrôle de migration

Pour un portage propre vers v1.1.0, le travail habituel est le suivant :

  1. Remplacez les modules personnalisés gpio / led / spi / uart / socket / wlan / file / select par pyb / machine de MicroPython (la suppression des modules personnalisés).

  2. Faites import image et préfixez Image() / HaarCascade() par image. (le déplacement du module image).

  3. Utilisez import time et clock = time.clock() (le déplacement de l’horloge).

  4. Ajoutez /flash / /sd à sys.path explicitement si vous importiez des modules auxiliaires par nom brut (le changement de sys.path).

Tous les autres scripts s’exécutent sans modification.