v1.4.0

v1.4.0 est une réorganisation fondatrice d’imlib. find_blobs() / find_markers() ont été réécrits pour un suivi direct par seuil de couleur, de nombreuses méthodes d’image autonomes ont été regroupées dans les tuples de blob, et plusieurs méthodes d’image ont été renommées (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Elle ajoute également sensor.get_fb() / les bascules AGC / AEC et ~60 scripts d’exemple. Il s’agit d’une version fortement incompatible — consultez les changements incompatibles ci-dessous.

Points forts

  • Suivi de blob basé sur la couleurfind_blobs() prend directement des seuils de couleur et retourne une liste plate de tuples de blob.

  • Nettoyage d’imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Capteur — ajout de sensor.get_fb() et des bascules d’activation AGC/AEC.

  • ~60 scripts d’exemple ajoutés/étendus.

  • Incompatible : l’API de blob, les méthodes d’image supprimées et plusieurs renommages — voir les changements incompatibles.

Nouvelles fonctionnalités

  • Capteur — ajout de sensor.get_fb() (récupérer le dernier tampon d’image de capture), sensor.set_gain_ctrl(enable) (basculer l’AGC) et sensor.set_exposure_ctrl(enable) (basculer l’AEC).

  • Image — l’indexation d’image (img[i]) prend désormais en charge la lecture et l’écriture de pixels (niveaux de gris / RGB565 / JPEG) ; ajout d’un image.compress() sur place et d’un argument nommé quality= sur les fonctions JPEG ; find_blobs() / find_markers() / find_features() retournent désormais une liste vide (itérable) au lieu d’un non-liste lorsqu’aucun résultat n’est trouvé.

  • Ajout de ~60 scripts d’exemple (contrôle de carte, filtres d’image, suivi de couleur, détection de visage / œil / caractéristique, shield WiFi) et d’un deuxième exemple de détection d’iris.

Autres changements et améliorations

  • image.histeq() fonctionne désormais sur les images RGB565, et non plus uniquement en niveaux de gris.

Corrections de bogues

  • Initialisation de pyb.DAC au démarrage pour que le DAC fonctionne (#121), correction d’un image.dilate() défectueux, de la corruption d’octets nuls de client.send() du WINC, de la réitération de fusion de blobs, d’un bogue de réinitialisation du tampon de fichier qui cassait le système de fichiers après la première utilisation, du calcul To_min / To_max du thermopile (#113), et application d’un correctif HAL I2C/DMA en amont de MicroPython.

Matériel et prise en charge des cartes

  • Shield WiFi — WINC1500 mis à jour vers les fichiers de carte Rev-B.

  • pyb.DAC — périphérique DAC activé.

Changements d’API incompatibles

Ruptures d’API visibles par l’utilisateur entre v1.3.0 et v1.4.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 du code.

  • mineur — API restreinte ; n’affecte que les scripts qui l’utilisaient.

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

find_blobs() / find_markers() réécrits (majeur)

image.find_blobs() / find_markers() ont été réécrits pour le suivi basé sur la couleur : vous passez désormais directement des seuils de couleur (et une fonction de filtre optionnelle) au lieu d’opérer sur une image pré-segmentée, et le résultat est une unique liste plate de tuples de blob à 10 éléments (avec un champ de code couleur) au lieu d’une arborescence imbriquée par couleur. Retravaillez les scripts de suivi de couleur pour passer des seuils de couleur et parcourir la liste plate.

Commits : d1ff36602, 16daeb83a

Méthodes d’image autonomes supprimées (majeur)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() et image.pixels() ont été supprimées. Les données de centroïde / orientation / nombre de pixels sont désormais disponibles sous forme de champs des tuples de blob retournés par find_blobs().

Commits : 9e5d379c1

Renommages de méthodes imlib (majeur)

Plusieurs méthodes d’image ont été renommées/retravaillées : image.subimg()image.copy(), image.blit()image.replace(), et image.blend() a été modifiée pour correspondre aux deux autres opérations sur deux images. Les méthodes image.scale() / scaled() / rainbow() ont été supprimées (rainbow a été déplacée vers le module FIR). Mettez à jour les appels avec les nouveaux noms.

Commits : b534dc6ff

find_eyes() renommée en find_eye() (mineur)

image.find_eyes() a été renommée en image.find_eye() et retourne désormais un 2-tuple d’iris (x, y) au lieu de l’ancien tuple d’yeux. Renommez l’appel et mettez à jour la gestion de la valeur de retour.

Commits : 7a01a9bed

image.compress() renommée en compressed() (mineur)

image.compress() (qui retournait une nouvelle image JPEG) a été renommée en image.compressed() ; le nouveau image.compress() compresse plutôt l’image sur place et retourne None. image.save() a également reçu un argument nommé quality= et retourne désormais None au lieu de True. Migrez img.compress(q) (qui attend une image retournée) vers img.compressed(quality=q).

Commits : 367e5fdd3

Liste de contrôle pour la migration

Pour un portage propre vers v1.4.0, le travail habituel consiste à :

  1. Retravailler le code de suivi de couleur pour passer des seuils de couleur à find_blobs() / find_markers() et parcourir la liste plate de tuples de blob (la réécriture de find_blobs).

  2. Lire les données de centroïde / orientation / pixel à partir des tuples de blob au lieu des méthodes autonomes supprimées (les méthodes d’image supprimées).

  3. Renommer subimgcopy, blitreplace, corriger les appels blend() et remplacer scale / scaled / rainbow (les renommages imlib).

  4. Renommer find_eyes()find_eye() (le renommage de find_eye) et compress()compressed() (le renommage de compress).

Tous les autres scripts fonctionnent sans modification.