13.3.1.1. A CLI openmv¶
A instalação do pacote adiciona um executável openmv que abre um visualizador pygame ligado a uma câmara via USB. Sem argumentos além da porta série, executa um pequeno script de teste integrado, transmite o buffer de fotograma resultante e apresenta-o redimensionado e anotado com a taxa de fotogramas atual:
openmv --port /dev/ttyACM0
O caminho da porta depende da plataforma anfitriã. No Linux, /dev/ttyACMx para USB CDC e /dev/ttyUSBx para uma ponte USB-para-UART. No macOS, /dev/tty.usbmodem... ou /dev/cu.usbmodem.... No Windows, COMx.
O visualizador é a forma mais rápida de confirmar que o pacote está instalado, a câmara é acessível e o protocolo está a funcionar. É também um suporte de demonstração útil durante o desenvolvimento de scripts – substitua o script de teste integrado por qualquer ficheiro MicroPython com --script e observe o resultado sem sair do terminal.
Esc, Ctrl+C no terminal, ou fechar a janela do visualizador, encerram o programa corretamente.
13.3.1.1.1. Executar um script personalizado¶
--script aponta a CLI para um ficheiro fonte MicroPython no disco. O ficheiro é carregado para a câmara, executado em substituição do script de teste integrado, e quaisquer fotogramas que produza são transmitidos de volta para o visualizador:
openmv --port /dev/ttyACM0 --script my_script.py
Tudo o que o script imprime em stdout é espelhado no terminal do anfitrião em tempo real. Passe --quiet para suprimir isso, ou --debug para registo de protocolo detalhado.
13.3.1.1.2. Pré-visualizar um canal personalizado¶
--channel NAME consulta um canal de dados personalizado registado pelo script em execução na câmara e imprime os primeiros dez bytes de cada atualização no terminal:
openmv --port /dev/ttyACM0 --channel ticks
O script de teste integrado que é executado quando não é fornecido nenhum --script regista um canal ticks que devolve o tempo de funcionamento em milissegundos da câmara, pelo que --channel ticks demonstra a superfície de canal bidirecional que Canais personalizados aborda em detalhe – sem escrever qualquer código no anfitrião ou na câmara.
13.3.1.1.3. Modo de referência¶
--bench substitui o script de teste padrão por um benchmark de débito de compressão JPEG:
openmv --port /dev/ttyACM0 --bench
A câmara captura um fotograma RGB565 QVGA, comprime-o para JPEG e depois envia repetidamente o mesmo buffer comprimido num ciclo fechado. O visualizador reporta a taxa de dados USB bruta em vez de um fotograma descodificado ao vivo, pelo que o número no ecrã é o limite máximo que a ligação consegue sustentar para esse anfitrião. Útil para comparar câmaras ou anfitriões sem a variabilidade do que está efetivamente a ser capturado.
13.3.1.1.4. Criação de perfis¶
A CLI pode sobrepor dados do profiler ao vivo nos fotogramas transmitidos. A sobreposição só é útil quando a câmara está a executar um firmware compilado com PROFILE_ENABLE=1 e o canal profile registado; no firmware padrão, os controlos de criação de perfis não têm efeito.
--firmware PATH– carrega o ELF do firmware que a câmara está a executar para que a sobreposição possa resolver endereços de funções nos registos de perfil para nomes legíveis por humanos. Sem ele, a sobreposição mostra endereços brutos.
Três atalhos de teclado no visualizador controlam o profiler:
Tecla |
Ação |
|---|---|
|
Percorre a sobreposição do profiler: desligado, desempenho, eventos. |
|
Alterna o modo do profiler entre inclusivo e exclusivo. O tempo inclusivo imputa o tempo do chamado ao chamador; o tempo exclusivo não. |
|
Reinicia os contadores do profiler. |
13.3.1.1.5. Opções de ajuste do protocolo¶
As opções abaixo espelham os parâmetros do construtor em openmv.Camera. Os valores predefinidos funcionam em todas as câmaras fornecidas; substitua-os apenas ao depurar um firmware personalizado ou ao simular condições de ligação adversas.
--baudrate N– predefinido para921600(o valor mágico que muda USB para o protocolo OpenMV). Substitua apenas em ligações UART.--timeout SEC– tempo limite por operação em segundos (predefinição1.0).--max-retry N– tentativas antes de a ligação ser declarada interrompida (predefinição3).--max-payload N– tamanho máximo do payload em bytes (predefinição4096). A câmara negoceia para baixo se não conseguir processar tanto.--crc BOOL– ativa a validação CRC em cada pacote (predefiniçãotrue).--seq BOOL– ativa a validação do número de sequência (predefiniçãotrue).--ack BOOL– ativa o reconhecimento por pacote (predefiniçãotrue).--events BOOL– ativa as notificações de eventos da câmara (predefiniçãotrue).--drop-rate FLOAT– taxa de simulação de descarte de pacotes em[0.0, 1.0](predefinição0.0). Apenas para testes.
Um ajuste específico da CLI:
--poll MS– taxa de consulta do ciclo principal do visualizador, em milissegundos (predefinição4).
13.3.1.1.6. Opções diversas¶
Duas opções ajustam a forma como o visualizador apresenta o fluxo sem alterar o comportamento da câmara:
--scale N– fator de zoom do ecrã (predefinição4). Útil quando os fotogramas QVGA são demasiado pequenos para ler num ecrã 4K.--raw– solicita à câmara que envie buffers de pixel sem compressão em vez de comprimidos em JPEG. Útil em câmaras sem suporte de hardware JPEG; Transmissão de fotogramas em tempo real aborda as trocas.
13.3.1.1.7. O que o visualizador está a fazer¶
A CLI é em si mesma um programa openmv.Camera. Liga-se, chama stop() para limpar qualquer script em execução, carrega o script com exec(), ativa a transmissão com streaming(), depois entra em ciclo chamando read_frame() (para atualizar o ecrã), read_stdout() (para espelhar as impressões do script) e read_status() (para monitorizar todos os outros canais registados). O código-fonte está em cli.py e é uma referência funcional para uma aplicação que controla uma câmara do início ao fim.