v2.7.0¶
v2.7.0 modernise l’API d’auto-gain / auto-exposition / balance des blancs du sensor vers des unités physiques (dB / microsecondes), refond la corrélation de phase find_displacement() (en ajoutant rotation/échelle), et ajoute get_similarity() (SSIM), chrominvar() / illuminvar(), des tampons d’image supplémentaires et une bibliothèque MQTT. C’est une importante version avec des changements incompatibles — lisez les changements incompatibles ci-dessous.
Points forts¶
API capteur moderne —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()utilisent désormais des dB / microsecondes, avec les correspondantsget_gain_db()/get_exposure_us()/get_rgb_gain_db().Corrélation de phase —
find_displacement()retravaillé avec rotation / échelle etfind_rotscale()/linpolar()/logpolar().SSIM — similarité structurelle
image.get_similarity().Tampons d’image supplémentaires —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — une nouvelle bibliothèque MQTT.
Incompatible : l’API de gain/exposition/balance des blancs du capteur,
find_displacement()/ les tailles de trame FFT,find_number(), les outils de micrologiciel WINC et lez_rotation()des AprilTag ont tous changé — voir les changements incompatibles.
Nouvelles fonctionnalités¶
Capteur — ajout de
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), d’un mot-clégain_db_ceilingsurset_auto_gain(), de la prise en chargehmirror/vflipdu MT9V034, et desensor.alloc_extra_fb()/sensor.dealloc_extra_fb()pour des tampons d’image supplémentaires en RAM.Image — ajout de
remove_shadows(),min()/max()(différence de trames),get_similarity()(SSIM) avec un exemple de similarité structurelle,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), des mots-clés threshold / offset / invert sur les filtres adaptatifsmean()/mode()/median()/midpoint(),len()/ l’indexation sur l’objet keypoints, et un accesseur.match()sur l’objet de correspondance de points clés.Bibliothèques / réseau — ajout d’une bibliothèque MQTT (avec un exemple WiFi MQTT) et d’un mode
network.WINC.MODE_BSPpour programmer le micrologiciel WINC via l’UART de débogage.Exemples — ajout de scripts d’exemple basse consommation
deep_sleep.py/stop_mode.py, de flux optique avancé, et de scripts polaires linéaires/logarithmiques ; le micrologiciel analyse désormaisuart.iniau démarrage pour activer un UART REPL.
Autres changements et améliorations¶
get_regression()a gagné les mots-clésarea_threshold/pixels_thresholdet une régression robuste plus rapide (pour le suivi de ligne / la course) ;get_pixel()prend désormais en charge les images Bayer ; ajout des bases STM32H7 (en-têtes CMSIS / HAL / programme d’amorçage — la carte H7 n’est pas encore utilisable) ; mise à jour du micrologiciel WINC1500 intégré (19.4.4 / 19.5.2).
Corrections de bogues¶
Imagerie :
Correction du bogue de dépassement de limites de la recherche en losange de
find_template(), de la corruption delogpolar/linpolar, et deilluminvar()qui s’emballait sur des valeurs de couleur proches de zéro.
Capteur et système :
Correction de bogues du contrôle automatique de gain, restauration de la taille
MAIN_FBlors desnapshot()(afin quecopy_to_fbà une résolution différente, le redimensionnement du FB et le pooling de flux optique fonctionnent à nouveau), du délai d’attentegethostbynamedu WINC, de l’effacement de l’étatpydfusur le programme d’amorçage H7, et des modes basse consommation stop/standby.
Matériel et prise en charge des cartes¶
STM32H7 — bases (CMSIS / HAL / programme d’amorçage) ; la carte OpenMV H7 n’est pas encore utilisable dans cette version.
WINC1500 — mise à jour du micrologiciel intégré.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v2.6.0 et v2.7.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.
mineur — API restreinte ; n’affecte que les scripts qui l’utilisaient.
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 hachage de commit renvoie à son diff sur GitHub.
sensor.set_auto_gain() retravaillé en dB (majeur)¶
sensor.set_auto_gain() n’accepte plus le mot-clé entier value= et ne renvoie plus True / False. Utilisez sensor.set_auto_gain(False, gain_db=...) (une valeur flottante en dB), relisez-la avec le nouveau sensor.get_gain_db(), et encadrez l’appel d’un try / except puisqu’un échec lève désormais ValueError.
Commits : b906c5f19
sensor.set_auto_exposure() retravaillé en microsecondes (majeur)¶
sensor.set_auto_exposure() n’accepte plus le mot-clé entier value= et ne renvoie plus True / False. Utilisez sensor.set_auto_exposure(False, exposure_us=...), relisez-la avec le nouveau sensor.get_exposure_us(), et gérez le ValueError levé en cas d’échec.
Commits : 7be0a7a18
find_displacement() / les tailles de trame FFT refondus (majeur)¶
La corrélation de phase a été refondue. image.find_displacement() renvoie désormais un objet de déplacement (avec x_translation() / y_translation() — anciennement x_offset / y_offset — plus rotation() / scale() et de nouveaux mots-clés logpolar / fix_rotation_scale) ; l’objet rot-scale séparé a été supprimé et find_rotscale() ajouté. Les constantes de taille de trame FFT ont été renommées/supprimées : sensor.B40x30 a été entièrement supprimé, et sensor.B64x32 / B64x64 ont été renommés en majuscules sensor.B64X32 / B64X64 (avec les nouveaux B128X64 / B128X128).
sensor.set_auto_whitebal() retravaillé en dB (mineur)¶
sensor.set_auto_whitebal() a remplacé son mot-clé entier value=[r, g, b] par rgb_gain_db=[r, g, b] (dB flottant) et renvoie désormais None (levant ValueError en cas d’échec) au lieu de True / False. Utilisez le nouveau sensor.get_rgb_gain_db() pour relire les gains.
Commits : 30ecbdc4f
set_hmirror() / set_vflip() renvoient None (mineur)¶
sensor.set_hmirror() et sensor.set_vflip() renvoient désormais None et lèvent ValueError en cas d’échec au lieu de renvoyer un état True / False. Supprimez tout code qui se ramifie sur leur valeur de retour.
Commits : aeb023804
Les outils de micrologiciel WINC exigent un chemin de fichier (mineur)¶
L’outillage de micrologiciel de network.WINC a changé : wlan.fw_dump() / wlan.fw_update() prennent désormais un argument obligatoire de chemin de fichier de micrologiciel et le WINC est ouvert dans un mode de programmation (network.WINC(mode=...)). Mettez à jour les appels sans argument pour passer un chemin (par ex. wlan.fw_update("/winc_19_5_2.bin")).
Commits : fcc3b0b9c
image.find_number() exige une ROI 28x28 (comportement)¶
image.find_number() (LeNet) exige désormais une ROI exactement 28x28 qui tient à l’intérieur de l’image et lève une erreur sinon (au lieu de s’exécuter sur une ROI arbitraire/sur l’image entière). Passez une roi=(x, y, 28, 28) explicite.
Commits : 4d09a13f3
Le signe de z_rotation() des AprilTag inversé (comportement)¶
Le z_rotation() des AprilTag (et le rotation() associé) utilise désormais une convention de coordonnées droitière, de sorte que l’angle renvoyé est négatif par rapport aux versions précédentes. Les scripts qui dépendent de l’ancien signe doivent inverser la valeur ou ajuster leur calcul d’angle.
Commits : 7673aaf74
Liste de contrôle de migration¶
Pour un portage propre vers v2.7.0, le travail habituel est le suivant :
Porter
set_auto_gain()versgain_db=+get_gain_db()et gérerValueError(la refonte de l’auto-gain).Porter
set_auto_exposure()versexposure_us=+get_exposure_us()(la refonte de l’auto-exposition).Mettre à jour
find_displacement()vers l’objet de déplacement et renommer les constantes de taille de trame FFT (la refonte de find_displacement).Porter
set_auto_whitebal()versrgb_gain_db=+get_rgb_gain_db()(la refonte de la balance des blancs) et cesser de vérifier le retour deset_hmirror()/set_vflip()(le changement de mirror/flip).Passer un chemin de micrologiciel aux outils
fw_*du WINC (le changement des outils WINC).Passer une
roi28x28 àfind_number()(le changement de find_number) et ajuster le calcul d’angle des AprilTag pour le signe inversé dez_rotation()(le changement de z_rotation).
Tous les autres scripts fonctionnent sans modification.