v3.7.0¶
v3.7.0 é uma versão de grande envergadura. Adiciona o módulo audio (microfone PDM do Portenta H7) com uma nova API de callback não bloqueante, o módulo de reconhecimento de voz TensorFlow micro_speech, um novo controlador LCD RGB paralelo (com saída HDMI e toque FT5X06), um método image.flush() com constantes de formato de pixel, e um pipeline de escalonamento image.draw_image() reescrito. Várias bibliotecas auxiliares e métodos de imagem legados foram removidos e a matemática yuv_to_* foi alterada — leia as alterações de ruptura abaixo.
Destaques¶
Módulo
audio— captura de microfone PDM integrado do Portenta H7 com APIstart_streaming(callback)não bloqueante.micro_speech— um módulo de reconhecimento de voz micro-speech TensorFlow.Novo controlador LCD — suporte a ecrã RGB paralelo, saída HDMI (TFP410) e toque FT5X06.
image.draw_image()— reescrito com um pipeline completo de escalonamento/alfa/paleta (x_scale/y_scale/hint/color_palette…).image.flush()mais constantes de formato de pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Ruptura: as bibliotecas auxiliares de matemática legadas e vários métodos de imagem foram removidos, as APIs
draw_image()/ LCD foram reformuladas, eyuv_to_*já não subtrai 128 — veja as alterações de ruptura.
Novas funcionalidades¶
audio— um novo móduloaudiodo Portenta H7 para captura de microfone PDM:audio.init(),audio.start_streaming(callback)não bloqueante eaudio.stop_streaming()(a frequência é especificada em Hz).micro_speech— um novo módulo com uma classeMicroSpeech,audio_callback()emicro_speech()para reconhecimento de voz TensorFlow;listen()utiliza uma média de janela deslizante e aceita a palavra-chavefilterpara restringir os resultados a uma lista de etiquetas.LCD — um novo controlador LCD com suporte a ecrã RGB paralelo, tipos
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, muitas constantes de tamanho de fotograma,triple_buffer/framesize/refresh/bgr/deinit, umdisplayexpandido, saída HDMI via TFP410 e suporte a ecrã táctil FT5X06.image.flush()— adicionado um métodoimage.flush()e constantes de formato de pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— reescrito com um novo pipeline de escalonamento:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteehint, mais as constantesimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTe novos exemplos de mistura alfa / tabela de cores / escalonamento.ImageReader.next_frame()ganhou a palavra-chavepausepara desactivar o atraso de reprodução em tempo real.Adicionados exemplos de áudio Portenta (
audio_fft.py,micro_speech.py) e um exemplo de activação a partir de suspensão com ExtInt.
Outras alterações e melhorias¶
Os exemplos incorporados foram reorganizados em
scripts/examples/Arduino/; o framebuffer actualiza-se agora instantaneamente após carregar/criar imagens comcopy_to_fb=True(sem necessidade de flush manual); o heap da Portenta foi ligeiramente reduzido para acomodar mais estado estático do controlador.
Correções de erros¶
Câmara e imagem:
Corrigida a troca vermelho/azul (ordem de bytes RGB565) em imagens capturadas, o arredondamento de desenho DMA2D para corresponder ao restante código de desenho, a corrupção do
fb_allocem alocações recursivas (find_blobs()), e otop_hat()/black_hat()passaram a estar condicionados pela activação das operações binárias e matemáticas.
Ecrã e áudio:
Corrigida a saída do shield LCD e o modo de áudio mono de 1 canal da Portenta.
Portenta:
Contornado um problema Ethernet/SDRAM (colocar
rst_ethem alto) e corrigida a configuração de temporização da SDRAM.
Hardware e suporte a placas¶
Arduino Portenta H7 — captura de áudio com microfone PDM integrado (SAI / PDM2PCM).
LCD — novo controlador de ecrã RGB paralelo (LTDC activado na compilação H7), saída HDMI via TFP410 e suporte a ecrã táctil LCD FT5X06.
Alterações de ruptura na API¶
Alterações de API visíveis pelo utilizador entre v3.6.9 e v3.7.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
minor — API restrita; afecta apenas scripts que a utilizaram.
behavior — mesma API, resultados diferentes; verifique os scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se apenas pretende portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit é uma ligação para o respectivo diff no GitHub.
Bibliotecas auxiliares de matemática legadas removidas (minor)¶
As bibliotecas auxiliares mtx, rv, ulinalg, umatrix e vec foram removidas de scripts/libraries em favor do ulab. Os scripts que façam import de qualquer uma delas falharão e devem ser portados para ulab.
Commits: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() removidos (minor)¶
image.remove_shadows(), image.chrominvar() e image.illuminvar() foram eliminados sem substituto. Os scripts que chamem estes métodos devem remover as chamadas.
Commits: 3173c2bb3
Assinatura de image.draw_image() reformulada (minor)¶
image.draw_image() foi reescrito sobre um novo pipeline de escalonamento. Os antigos argumentos posicionais alpha / scale único e a ordenação posicional anterior já não se aplicam; utilize a nova forma por palavra-chave (x_scale= / y_scale= ou x_size= / y_size=, alpha=, color_palette=, hint= …).
Commits: 3439f8824
Reescrita do módulo LCD (minor)¶
O módulo lcd foi reescrito para o novo controlador de ecrã. lcd.init() aceita agora um type de ecrã (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) e novos argumentos por palavra-chave, e as constantes / superfície da API foram substancialmente reorganizadas. Os scripts antigos apenas para shield funcionam na sua maioria, mas os padrões e o comportamento mudaram — reveja os scripts LCD face à nova API type / framesize.
Commits: 185538207
yuv_to_* já não subtrai 128 (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() tratam agora o elemento Y da tupla como um valor sem sinal de 0–255 em vez de subtrair 128. Os chamadores devem passar Y sem o viés anterior de −128 para obter as mesmas cores de antes.
Commits: dcf141192
Lista de verificação de migração¶
Para uma migração limpa para v3.7.0, o trabalho típico é:
Porte a utilização de
mtx/rv/ulinalg/umatrix/vecparaulab(a remoção das bibliotecas de matemática).Remova as chamadas a
image.remove_shadows()/chrominvar()/illuminvar()(os métodos de imagem removidos).Actualize as chamadas a
image.draw_image()para a nova assinatura por palavra-chave (a reformulação do draw_image).Reveja os scripts LCD face à nova API
type/framesizedolcd(a reescrita do LCD).Retire o viés de −128 ao passar Y para
yuv_to_*(a alteração do yuv_to_*).
Todos os outros scripts funcionam sem modificações.