v2.1.0¶
v2.1.0 est une version massive de modernisation de l’API. Elle remplace le descripteur de points clés FREAK par ORB, remanie find_blobs() / les histogrammes / les statistiques en API basées sur des objets, renomme les fonctions d’exposition/gain/balance des blancs automatiques du sensor, ajoute la détection de QR codes et la correction d’objectif OV7725, et met en service la carte initiale OpenMV Cam M7. De nombreuses API ont changé — lisez les changements incompatibles ci-dessous.
Points forts¶
Points clés ORB — le descripteur FREAK a été remplacé par ORB (
find_keypoints()/match_descriptor()remaniés).API objets —
find_blobs(),get_histogram(),get_statistics()renvoient désormais des objets avec des accesseurs nommés.QR codes — ajout de la détection
image.find_qrcodes().OpenMV Cam M7 — prise en charge initiale de la carte.
Sensor —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(renommées) etset_lens_correction().Incompatible : le point clé/descripteur, le blob/histogramme/statistiques, les fonctions automatiques du capteur, et plusieurs autres API ont changé — voir les changements incompatibles.
Nouvelles fonctionnalités¶
OpenMV Cam M7 — ajout de la prise en charge initiale de la carte OpenMV 3 (M7).
QR codes — ajout de
image.find_qrcodes()avec un exempleqrcodes.py.Points clés ORB — nouveau système de descripteur ORB :
find_keypoints()avec un argumentcorner_detector(CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()avec un mot-cléfilter_outlierset une estimation de rotation ; sauvegarde/chargement des points clés.API objets —
image.get_histogram()/get_statistics()/get_percentile()renvoient des objets histogramme/statistiques ;find_blobs()renvoie des objets blob (rect()/cx()/cy()/code()/area()/pixels()) avecarea_threshold/pixels_threshold/merge/margin/invertetx_stride/y_stride.Sensor — ajout de
sensor.set_lens_correction(enable, radi, coef)pour l’ombrage d’objectif de l’OV7725,sensor.set_windowing()accepte désormais aussi un tuple(w, h)(auto-centré), etimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Ajout de scripts d’exemple de suivi de couleur, d’esclave SPI/I2C Arduino, de points clés, et d’histogramme/statistiques.
Autres changements et améliorations¶
L’IDE peut désormais interrompre un
main.pyen cours d’exécution ;find_blobs()/find_qrcodes()/get_statistics()plus rapides ; ORB utilise une distance de Hamming par popcount ; la correction d’objectif utilise moins de RAM ; une règleudevLinux empêche ModemManager de s’emparer du port série.
Corrections de bugs¶
Caméra et imagerie :
Correction du nettoyage/invalidation du cache DMA du M7 (trames corrompues), d’une ligne supplémentaire parasite à la fin de chaque trame, des limites de dépassement du tampon d’image JPEG, de la libération du tampon d’image en cas d’échec de
compress(), de la précision / ROI / gestion d’ensemble vide d’ORB, et de la géométrie deload_image(copy_to_fb=True).
Système :
Correction de la prise en charge de l’ADC du F7, d’un nom de registre de l’OV7725, de la synchronisation du programme d’amorçage/USB, utilisation de WFI pendant l’attente des captures, et passage de l’exemple de diffuseur MJPEG en mode non bloquant avec des délais d’expiration par client.
Matériel et prise en charge des cartes¶
OpenMV Cam M7 (OpenMV 3) — prise en charge initiale de la carte.
OV7725 — prise en charge de la correction d’objectif (ombrage).
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v2.0.0 et v2.1.0. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.
Chaque changement est étiqueté selon son impact :
major — affecte la plupart des scripts qui utilisaient la fonctionnalité ; vous devrez porter du code.
minor — API restreinte ; n’affecte que les scripts qui l’utilisaient.
behavior — même API, résultats différents ; revérifiez les scripts réglés.
Les changements sont regroupés par impact dans cet ordre. Si vous voulez simplement porter votre code, passez à la liste de vérification de migration à la fin. Chaque hash de commit renvoie à son diff sur GitHub.
FREAK remplacé par ORB ; API de descripteur remaniée (major)¶
Le descripteur de points clés FREAK a été supprimé et remplacé par ORB : image.FREAK n’existe plus (utilisez image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() ne prennent plus d’argument initial de type de descripteur (il est déduit de l’objet), match_descriptor() renvoie désormais un tuple à 8 éléments (cx, cy, x, y, w, h, match_count, rotation) (le dernier élément est un décompte brut, pas un pourcentage), et draw_keypoints() exige un objet de points clés au lieu d’une liste brute (x, y, angle). find_keypoints() a gagné corner_detector / max_keypoints / scale_factor avec des valeurs par défaut modifiées.
Renommage des fonctions automatiques du capteur (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() ont été renommées en sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (les anciens noms ont été supprimés). Chacune a gagné un mot-clé optionnel value= pour définir une valeur manuelle au lieu du mode automatique.
Commits : 1b22a2961
Histogramme / statistiques remaniés en API objets (major)¶
La surface d’histogramme/statistiques a été remaniée en image.get_histogram() / get_statistics() / get_percentile() basés sur des objets, renvoyant des objets histogramme/statistiques. Les anciens résultats plats d’histogramme/statistiques et les méthodes bin_count / l_bin_count / a_bin_count / b_bin_count ont été supprimés (utilisez len(histogram.bins()), etc.).
scale de find_features() renommé (major)¶
image.find_features() (Haar) a renommé son mot-clé scale= en scale_factor=. Mettez à jour les appels find_features(cascade, scale=...) en scale_factor=....
Commits : 96e4f770c
find_blobs() renvoie des objets ; find_markers() supprimé (minor)¶
image.find_blobs() renvoie désormais des objets blob avec des accesseurs nommés (l’accès par index fonctionne toujours pour la rétrocompatibilité), et image.find_markers() a été supprimé — utilisez plutôt find_blobs(..., merge=True, margin=...). La fonction de rappel de filtre avancé de blob de couleur n’est plus prise en charge.
Commits : af15ec6eb
img.copy_to_fb() remplacé (minor)¶
La méthode img.copy_to_fb() a été remplacée par un mot-clé copy_to_fb= sur image.Image / load_image(). Utilisez image.Image(path, copy_to_fb=True) pour charger de grandes images directement dans le tampon d’image.
Commits : 1645ab94b
compress() rejette une qualité hors plage (behavior)¶
image.compress() / compressed() lèvent désormais une erreur lorsque quality est en dehors de 1–100 au lieu de la limiter silencieusement. Limitez quality à 1–100 avant l’appel. Par ailleurs, le tampon JPEG de l’OpenMV 3 a été réduit de 64 Ko à 23000 octets, de sorte que les grandes trames peuvent désormais lever une erreur de mémoire insuffisante — réduisez la qualité ou la taille de trame JPEG.
Le zoom de lens_corr() est désormais fonctionnel (behavior)¶
image.lens_corr() applique désormais réellement son argument zoom (il était auparavant analysé mais sans effet), de sorte que la sortie diffère pour les scripts qui passaient un zoom différent de la valeur par défaut. Revérifiez le réglage de lens_corr().
Commits : d6b49adef
Liste de vérification de migration¶
Pour un portage propre vers v2.1.0, le travail habituel est :
Remplacer
image.FREAKparimage.ORB, supprimer l’argument de type de descripteur, et mettre à jour le déballage du tuple dematch_descriptor()/draw_keypoints()vers l’objet de points clés (le remaniement ORB).Renommer
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()vers les formesset_auto_*(le renommage des fonctions automatiques).Déplacer le code d’histogramme/statistiques vers les méthodes objets (le remaniement histogramme/statistiques).
Renommer
scale=defind_features()enscale_factor=(le renommage de find_features).Utiliser les accesseurs d’objet blob et remplacer
find_markers()parfind_blobs(merge=True, ...)(le changement de find_blobs) ; remplacerimg.copy_to_fb()par le mot-clécopy_to_fb=(le changement de copy_to_fb).Limiter la qualité de
compress()à 1–100 et revérifier les tailles JPEG sur l’OpenMV 3 (le changement de compress) ; régler à nouveau le zoom delens_corr()(le changement de lens_corr).
Tous les autres scripts s’exécutent sans modification.