13.3.1.1. L’interface en ligne de commande openmv¶
L’installation du paquet ajoute un exécutable openmv qui ouvre une visionneuse pygame connectée à une caméra via USB. Sans argument après le port série, il exécute un petit script de test intégré, renvoie le tampon d’image résultant en continu, et l’affiche redimensionné et annoté avec la cadence d’images actuelle:
openmv --port /dev/ttyACM0
Le chemin du port dépend de la plateforme hôte. Sous Linux, /dev/ttyACMx pour l’USB CDC et /dev/ttyUSBx pour un pont USB-vers-UART. Sous macOS, /dev/tty.usbmodem... ou /dev/cu.usbmodem.... Sous Windows, COMx.
La visionneuse est le moyen le plus rapide de confirmer que le paquet est installé, que la caméra est accessible et que le protocole fonctionne. C’est aussi un banc de démonstration utile pendant le développement de scripts : remplacez le script de test intégré par n’importe quel fichier MicroPython avec --script et observez le résultat sans quitter le terminal.
Esc, Ctrl+C dans le terminal, ou la fermeture de la fenêtre de la visionneuse permettent tous de quitter proprement.
13.3.1.1.1. Exécuter un script personnalisé¶
--script indique à l’interface en ligne de commande un fichier source MicroPython sur le disque. Le fichier est téléversé vers la caméra, exécuté à la place du script de test intégré, et toutes les trames qu’il produit sont renvoyées en continu vers la visionneuse:
openmv --port /dev/ttyACM0 --script my_script.py
Tout ce que le script écrit sur stdout est répercuté en temps réel sur le terminal de l’hôte. Passez --quiet pour supprimer cela, ou --debug pour une journalisation détaillée du protocole.
13.3.1.1.2. Prévisualiser un canal personnalisé¶
--channel NAME interroge un canal de données personnalisé enregistré par le script en cours d’exécution côté caméra et affiche les dix premiers octets de chaque mise à jour dans le terminal:
openmv --port /dev/ttyACM0 --channel ticks
Le script de test intégré qui s’exécute lorsqu’aucun --script n’est fourni enregistre un canal ticks qui renvoie le temps de fonctionnement de la caméra en millisecondes ; ainsi --channel ticks illustre la surface de canal bidirectionnelle que Canaux personnalisés détaille, sans que vous ayez à écrire le moindre code sur l’hôte ou la caméra.
13.3.1.1.3. Mode banc d’essai¶
--bench remplace le script de test standard par un banc d’essai de débit de compression JPEG:
openmv --port /dev/ttyACM0 --bench
La caméra capture une trame RGB565 QVGA, la compresse en JPEG, puis vide ce même tampon compressé dans une boucle serrée. La visionneuse indique le débit de données USB brut plutôt qu’une trame décodée en direct, de sorte que le nombre affiché à l’écran constitue la limite supérieure que la liaison peut soutenir vers cet hôte. Utile pour comparer des caméras ou des hôtes sans la variabilité liée au changement de ce qui est réellement capturé.
13.3.1.1.4. Profilage¶
L’interface en ligne de commande peut superposer des données de profileur en direct sur les trames diffusées. La superposition n’est utile que lorsque la caméra exécute un micrologiciel compilé avec PROFILE_ENABLE=1 et le canal profile enregistré ; sur un micrologiciel d’origine, les commandes de profilage n’ont aucun effet.
--firmware PATH: charge l’ELF du micrologiciel que la caméra exécute afin que la superposition puisse résoudre les adresses de fonctions dans les enregistrements de profil en noms lisibles par l’humain. Sans cela, la superposition affiche les adresses brutes.
Trois raccourcis clavier dans la visionneuse pilotent le profileur :
Touche |
Action |
|---|---|
|
Faire défiler la superposition du profileur : désactivée, performance, événements. |
|
Basculer le mode du profileur entre inclusif et exclusif. Le chronométrage inclusif impute le temps de l’appelé à l’appelant ; le chronométrage exclusif ne le fait pas. |
|
Réinitialiser les compteurs du profileur. |
13.3.1.1.5. Indicateurs de réglage du protocole¶
Les indicateurs ci-dessous reflètent les paramètres du constructeur de openmv.Camera. Les valeurs par défaut fonctionnent sur toutes les caméras livrées ; ne les modifiez que lors du débogage d’un micrologiciel personnalisé ou de la simulation de conditions de liaison défavorables.
--baudrate N: la valeur par défaut est921600(la valeur magique qui fait passer l’USB au protocole OpenMV). À ne modifier que sur les liaisons UART.--timeout SEC: délai d’expiration par opération en secondes (par défaut1.0).--max-retry N: nombre de tentatives avant que la liaison ne soit déclarée rompue (par défaut3).--max-payload N: taille maximale de la charge utile en octets (par défaut4096). La caméra négocie à la baisse si elle ne peut pas en gérer autant.--crc BOOL: active la validation CRC sur chaque paquet (par défauttrue).--seq BOOL: active la validation des numéros de séquence (par défauttrue).--ack BOOL: active l’accusé de réception par paquet (par défauttrue).--events BOOL: active les notifications d’événements depuis la caméra (par défauttrue).--drop-rate FLOAT: taux de simulation de perte de paquets dans[0.0, 1.0](par défaut0.0). À des fins de test uniquement.
Un bouton de réglage propre à l’interface en ligne de commande :
--poll MS: cadence d’interrogation de la boucle principale de la visionneuse, en millisecondes (par défaut4).
13.3.1.1.6. Indicateurs divers¶
Deux indicateurs ajustent la façon dont la visionneuse présente le flux sans modifier le comportement côté caméra :
--scale N: facteur de zoom d’affichage (par défaut4). Utile lorsque les trames QVGA sont trop petites pour être lues sur un écran 4K.--raw: demande à la caméra d’envoyer les tampons de pixels non compressés au lieu de compressés en JPEG. Utile sur les caméras dépourvues de prise en charge matérielle du JPEG ; Diffusion de trames traite des compromis.
13.3.1.1.7. Ce que fait la visionneuse¶
L’interface en ligne de commande est elle-même un programme openmv.Camera. Elle se connecte, appelle stop() pour effacer tout script en cours, téléverse le script avec exec(), active la diffusion avec streaming(), puis effectue une boucle appelant read_frame() (pour mettre à jour l’affichage), read_stdout() (pour répercuter les sorties du script) et read_status() (pour surveiller l’activité de tous les autres canaux enregistrés). Le code source se trouve dans cli.py et constitue une référence fonctionnelle d’une application pilotant une caméra de bout en bout.