v4.5.1¶
v4.5.1 ajoute des indications de dessin pour l’orientation et le rapport d’aspect des images, le chargement d’images directement depuis un chemin de fichier, un ioctl de champ de vision large pour le GC2145, et une nouvelle API de contrôleur de rétroéclairage. Elle remanie également le constructeur Image(), les API display et l’analyse des arguments des modules — lisez les changements incompatibles ci-dessous.
Points forts¶
Indications de dessin —
draw_image()a gagné des indications d’orientation (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) et de mise à l’échelle selon l’aspect (SCALE_ASPECT_KEEP/EXPAND/IGNORE).Charger des images depuis le disque —
draw_image()/display.write()acceptent une chaîne de chemin de fichier.Contrôle du rétroéclairage — nouvelles classes
DACBacklight/PWMBacklightet un argument d’affichagebacklight=.Incompatibilité : le constructeur
Image(), les APIdisplayet l’analyse des arguments des modules ont changé — voir les changements incompatibles.
Nouvelles fonctionnalités¶
Indications d’orientation de
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSE, ainsi que les raccourcisimage.ROTATE_90/ROTATE_180/ROTATE_270.Indications d’aspect de
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREpour ajuster / étendre / étirer.Constantes de palette —
image.PALETTE_RAINBOWetimage.PALETTE_IRONBOW(déplacées dans le module image).Champ de vision large — nouveaux ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(sur le GC2145, jusqu’à 5x de mise à l’échelle du capteur).Charger depuis le disque —
draw_image()etdisplay.write()acceptent une chaîne de chemin de fichier d’image source, la chargeant directement depuis le stockage.Contrôleurs de rétroéclairage — nouvelles classes
DACBacklightetPWMBacklight(importables depuisdisplay), et un argument réservé aux mots-clésbacklight=sur les constructeurs d’affichage SPI/parallèle.
Autres changements et améliorations¶
Le pilote d’affichage DSI ST7701 a été déplacé dans son propre module
st7701.py(toujours importable viafrom display import *) et est figé sur l’Arduino Giga ; le pilote IMUlsm9ds1a été figé sur l’Arduino Nano 33 BLE Sense.Les caméras MT9V022 / MT9V034 (à obturateur global) appliquent désormais une correction du bruit de ligne pour une meilleure qualité d’image.
Le volume de stockage de masse USB de l’i.MX RT est désormais étiqueté comme un disque OpenMV.
Corrections de bugs¶
Caméra et capteurs :
Correction de la détection des coins (
find_keypoints()FAST/AGAST) sur les images de plus de 480 lignes — le tampon par ligne est désormais dimensionné selon la hauteur de l’image.Ajout de la prise en charge de la broche FSYNC pour des
snapshot()synchronisés sur la trame sur i.MX RT (OpenMV RT1060), et correction des broches SPI4 MOSI/MISO inversées sur le RT1060.
Affichage et vidéo :
Correction de l’ordre des arguments du constructeur
SPIDisplay(bgr,byte_swap,triple_bufferétaient appliqués aux mauvais paramètres).Correction de la corruption d’image du shield TV lors du dessin d’une image avec un rectangle spécifié, et des limites de trame MJPEG incorrectes lors de l’enregistrement de trames mises à l’échelle.
Réseau :
Le mode AP WiFi WINC n’impose plus l’ancienne restriction au WEP uniquement — les modes AP ouvert et WPA fonctionnent avec une gestion correcte du PSK.
Matériel et prise en charge des cartes¶
OpenMV RT1060 — broche FSYNC et broches SPI4 corrigées.
Arduino GIGA — contournement de fiabilité QSPI ; afficheur ST7701 figé.
Arduino Nano 33 BLE Sense — pilote IMU
lsm9ds1figé.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v4.5.0 et v4.5.1. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.
Chaque changement est étiqueté selon son impact :
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 contrôle de migration à la fin. Chaque hash de commit renvoie vers son diff sur GitHub.
Constructeur Image() et API display (mineur)¶
Le constructeur image.Image a été remanié pour utiliser des arguments nommés (height, pixformat, buffer=, copy_to_fb=) ; il peut désormais construire une image à partir d’un bytearray/tampon existant, et un tampon est requis pour les formats compressés. display.write() a été remanié : x_scale/y_scale prennent désormais un float (rapport d’échelle) ou un int (taille cible en pixels) et les mots-clés distincts x_size/y_size ont été supprimés. Le premier argument positionnel de WINC.connect() a été renommé essid → ssid, et les résultats de scan WiFi WINC sont passés à (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID sont désormais des octets ; le BSSID n’est plus une chaîne MAC formatée).
Plage de rétroéclairage, mise à l’échelle et arguments réservés aux mots-clés (comportement)¶
Display.backlight() prend désormais une intensité de 0 à 100 (0 = éteint, 100 = maximum) au lieu de 0 à 255, levant une ValueError hors plage. Les valeurs entières x_scale/y_scale sont désormais traitées comme un facteur d’échelle multiplicatif (comme les floats) plutôt que comme une dimension cible en pixels — cela affecte fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display, et la mise à l’échelle tv. L’analyse des arguments des modules sensor, fir, tof, tv, mjpeg, gif, imageio, tf et audio a été unifiée, rendant plusieurs options auparavant positionnelles réservées aux mots-clés (les noms, valeurs par défaut et comportements sont par ailleurs inchangés).
Commits : 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Liste de contrôle de migration¶
Pour un portage propre vers v4.5.1, le travail typique consiste à :
Mettre à jour la construction de
Image()vers la nouvelle forme à mots-clés, faire passerdisplay.write()hors dex_size/y_size, et renommerWINC.connect()essid→ssid(gérer les nouveaux tuples de scan basés sur des octets) (les changements constructeur/display/WINC).Remettre à l’échelle les appels
Display.backlight()sur 0 à 100, revérifier toute utilisation entière dex_scale/y_scale, et passer les options de module auparavant positionnelles comme mots-clés (les changements de comportement).