v3.3.0¶
v3.3.0 est une version majeure. Elle ajoute la prise en charge complète de la caméra thermique FLIR Lepton avec une nouvelle interface sensor.ioctl() et des palettes de couleurs, un module de sortie vidéo SPI tv, le mode déclenché à obturateur global, un grand ensemble de nouvelles méthodes de dessin/analyse image (gamma_corr(), draw_ellipse(), draw_edges(), de nombreuses propriétés de blob), ainsi que de nouvelles bibliothèques ToF / moteur / linalg. L’API cpufreq a été retravaillée et sensor.set_framesize() lève désormais une exception — lisez les changements incompatibles ci-dessous.
Points forts¶
FLIR Lepton — prise en charge complète de la caméra thermique via la nouvelle interface
sensor.ioctl(), des palettes de couleurs etimage.to_rainbow().Module
tv— sortie vidéo SPI TV / composite.Mode déclenché à obturateur global — capture déclenchée du MT9V034 via
sensor.ioctl().Imagerie —
gamma_corr(),draw_ellipse(),draw_edges(), fusion alpha dedraw_image()et de nombreuses nouvelles propriétés de blob.Nouvelles bibliothèques — distance ToF VL53L1X, pilote de moteur TB6612, micro-linalg.
Incompatible : l’API
cpufreqa été retravaillée,sensor.set_framesize()lève désormais une exception en cas d’échec,sensor.alloc_extra_fb()a abandonné Bayer/JPEG, et les arguments positionnels deimage.replace()ont été décalés — voir les changements incompatibles.
Nouvelles fonctionnalités¶
FLIR Lepton — ajout de
sensor.ioctl()pour le contrôle spécifique au capteur et d’un ensemble complet d’ioctls Lepton (radiométrie, rafraîchissement/résolution, exécution de commande, définition/lecture d’attribut, température FPA/AUX en °C, mode/plage de mesure, largeur/hauteur), desensor.set_color_palette()/sensor.get_color_palette()avecsensor.PALETTE_RAINBOW/PALETTE_IRONBOW, deimage.to_rainbow()et de scripts d’exemple Lepton (27-Lepton).Mode déclenché —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEpour la capture déclenchée à obturateur global du MT9V034, avec des exemples à haute fréquence d’images et en mode déclenché.Module
tv— ajout des liaisons de sortie vidéo SPI TV / composite.Imagerie — ajout de
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), de la fusion alpha dedraw_image(), d’un mot-clémask=surclear(), réintroduction demask_rectangle()/mask_circle()/mask_ellipse(), des mots-clés rotation / hmirror / vflip surdraw_string()/draw_text(), d’un mot-clétranspose(et des aliasassign/set) surreplace(), des paramètresx_scale/y_scaledecopy()ainsi quecrop()/scale(), d’un constructeurImage()à partir des dimensions, du format de pixelsensor.BINARY, de l’exportation des fonctions de conversion d’espace colorimétrique, et de nombreuses nouvelles propriétés de blob (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, rotation).Bibliothèques — ajout du pilote de capteur de distance ToF
vl53l1x, du pilote de moteurtb6612(avec des exemples de Motor-Shield à moteur CC et pas à pas) et d’une bibliothèque micro-linalg (ulinalg/umatrix).Mise à niveau de FatFS vers FF13C (compatible exFAT).
Autres changements et améliorations¶
Amélioration de la qualité JPEG par défaut (milieu de la plage bas–haut au lieu d’une valeur codée en dur) ; les opérations d’image sur place ne nécessitent plus de répéter l’image comme premier argument ;
draw_string()accepte des valeurs d’échelle non entières.
Corrections de bogues¶
Caméra et capteurs :
Correction du blocage au démarrage du Lepton 3.5 (délai d’attente + récupération) et de la fiabilité de la réinitialisation, de
set_framesize()avantset_pixformat()sur le MT9V034 (l’ordre des appels n’a plus d’importance), du WVGA du MT9V034 sur le STM32H7, de la plage d’auto-exposition du MT9V034 et des mises à jour des registres fantômes, ainsi que du bogue de l’ADC du H7.
Imagerie :
Correction d’un accès mémoire invalide dans
find_apriltags(), decopy()lors de la copie d’une image mise à l’échelle vers le tampon d’image principal, de l’allocation de tampon d’image deto_grayscale()/to_rgb565(), dulen()de l’objet keypoint, de la gestion des limites des MCU JPEG, de l’analyse de la liste de seuils debinary(), et de l’acceptation des tuples de keypoints pardraw_keypoints().
Système :
Correction des fuites par déséquilibre mark/free de
fb_allocdans les méthodesimage/fir/lcd/tv/nn,py_assertlibère désormais la mémoire du tampon d’image lors d’exceptions capturées (#417), effacement de l’indicateur de dépassement (ORE) de l’UART afin que les dépassements ne bloquent plus les lectures UART, correction du gestionnaire d’IRQ du RTC, et correction de l’outil Windowscascade_convert.py.
Matériel et prise en charge des cartes¶
Caméra thermique FLIR Lepton.
Shield TV — sortie vidéo SPI TV / composite.
Mode déclenché à obturateur global (MT9V034).
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v3.2.0 et v3.3.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 utilisant 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 directement à la liste de migration à la fin. Chaque hash de commit renvoie à son diff sur GitHub.
API cpufreq retravaillée (majeur)¶
Le module cpufreq a été retravaillé pour la prise en charge du H7. Les constantes cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ et cpufreq.get_frequency() ont été supprimées. cpufreq.set_frequency() prend désormais un simple entier en MHz (par ex. cpufreq.set_frequency(120)), et cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() ont été ajoutées.
Commits : 6babf84a1
Arguments positionnels de image.replace() décalés (mineur)¶
image.replace() a gagné un argument transpose, décalant l’argument positionnel mask de la position 4 à la position 5. Le code qui passait mask de façon positionnelle (par ex. img.replace(src, hmirror, vflip, mask)) doit basculer vers la forme à mot-clé img.replace(src, mask=mask).
Commits : dbe7bf059
sensor.alloc_extra_fb() n’accepte plus Bayer/JPEG (mineur)¶
sensor.alloc_extra_fb() n’accepte plus sensor.BAYER ni sensor.JPEG (il prend désormais aussi en charge sensor.BINARY). Le code qui allouait des tampons d’image supplémentaires au format Bayer ou JPEG doit utiliser GRAYSCALE / RGB565 (ou allouer le tampon d’une autre manière).
Commits : f9e6b3fe0
sensor.set_framesize() lève une exception en cas d’échec (comportement)¶
sensor.set_framesize() lève désormais une ValueError lorsque la taille d’image n’est pas prise en charge, au lieu de renvoyer False. Le code qui vérifiait la valeur de retour False doit désormais intercepter l’exception ValueError.
Commits : b0442633e
Liste de migration¶
Pour un portage propre vers v3.3.0, le travail habituel est le suivant :
Porter le code
cpufreqversset_frequency()en entier-MHz etget_current_frequencies()/get_supported_frequencies()(la refonte de cpufreq).Passer
maskàimage.replace()comme mot-clé (le changement de replace).Allouer les tampons d’image supplémentaires en
GRAYSCALE/RGB565au lieu de Bayer/JPEG (le changement de alloc_extra_fb).Intercepter
ValueErrorautour desensor.set_framesize()au lieu de vérifierFalse(le changement de set_framesize).
Tous les autres scripts fonctionnent sans modification.