v3.3.0¶
A v3.3.0 é uma versão muito grande. Adiciona suporte completo à câmara térmica FLIR Lepton com uma nova interface sensor.ioctl() e paletas de cores, um módulo tv de saída de vídeo SPI, modo com disparo de obturador global, um grande conjunto de novos métodos de desenho/análise image (gamma_corr(), draw_ellipse(), draw_edges(), muitas propriedades de manchas), e novas bibliotecas ToF / motor / linalg. A API cpufreq foi reformulada e sensor.set_framesize() passa agora a lançar excepções — leia as alterações incompatíveis abaixo.
Destaques¶
FLIR Lepton — suporte completo de câmara térmica através da nova interface
sensor.ioctl(), paletas de cores eimage.to_rainbow().Módulo
tv— saída de vídeo composto / TV SPI.Modo com disparo de obturador global — captura disparada pelo MT9V034 via
sensor.ioctl().Imagem —
gamma_corr(),draw_ellipse(),draw_edges(), mistura alfa comdraw_image()e muitas novas propriedades de manchas.Novas bibliotecas — sensor de distância ToF VL53L1X, controlador de motor TB6612, micro-linalg.
Incompatível: a API
cpufreqfoi reformulada,sensor.set_framesize()lança agora excepção em caso de falha,sensor.alloc_extra_fb()deixou de suportar Bayer/JPEG, e os argumentos posicionais deimage.replace()foram deslocados — consulte as alterações incompatíveis.
Novas funcionalidades¶
FLIR Lepton — adicionado
sensor.ioctl()para controlo específico do sensor e um conjunto completo de ioctls do Lepton (radiometria, refrescamento/resolução, executar comando, definir/obter atributo, temperatura FPA/AUX em °C, modo/intervalo de medição, largura/altura),sensor.set_color_palette()/sensor.get_color_palette()comsensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow()e scripts de exemplo do Lepton (27-Lepton).Modo disparado —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEpara captura disparada com obturador global MT9V034, com exemplos de alta FPS e modo disparado.Módulo
tv— adicionadas ligações de saída de vídeo composto / TV SPI.Imagem — adicionados
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), mistura alfa comdraw_image(), palavra-chavemask=emclear(), readicionadosmask_rectangle()/mask_circle()/mask_ellipse(), palavras-chave de rotação / hmirror / vflip emdraw_string()/draw_text(), palavra-chavetranspose(e aliasesassign/set) emreplace(),x_scale/y_scaleemcopy()maiscrop()/scale(), construtorImage()a partir de dimensões, o pixformatsensor.BINARY, funções exportadas de conversão de espaço de cores, e muitas novas propriedades de manchas (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, rotação).Bibliotecas — adicionado o controlador de sensor de distância ToF
vl53l1x, o controlador de motortb6612(com exemplos Motor-Shield de motor DC e passo-a-passo) e uma biblioteca micro-linalg (ulinalg/umatrix).Actualizado o FatFS para FF13C (compatível com exFAT).
Outras alterações e melhorias¶
Melhorada a qualidade JPEG predefinida (valor intermédio entre baixo e alto em vez de um valor fixo); as operações de imagem no local deixam de exigir repetir a imagem como primeiro argumento;
draw_string()aceita valores de escala não inteiros.
Correcções de erros¶
Câmara e sensores:
Corrigido o bloqueio na inicialização do Lepton 3.5 (timeout + recuperação) e a fiabilidade do reset,
set_framesize()do MT9V034 antes deset_pixformat()(a ordem de chamada já não importa), WVGA do MT9V034 no STM32H7, o intervalo de exposição automática do MT9V034 e as actualizações de registos shadow, e o erro ADC do H7.
Imagem:
Corrigido um acesso inválido à memória em
find_apriltags(),copy()ao copiar uma imagem com escala para o framebuffer principal, alocação do framebuffer emto_grayscale()/to_rgb565(), olen()do objecto ponto-chave, o tratamento de limites MCU em JPEG, a análise de lista de limiares embinary(), edraw_keypoints()a aceitar tuplos de pontos-chave.
Sistema:
Corrigidas as fugas de desequilíbrio mark/free do
fb_allocnos métodos deimage/fir/lcd/tv/nn, tornado opy_asserta libertar a memória do framebuffer em excepções capturadas (#417), limpo o flag de sobrecarga UART (ORE) para que as sobrecargas deixem de bloquear as leituras UART, corrigido o handler de IRQ do RTC, e corrigida a ferramenta Windowscascade_convert.py.
Hardware e suporte de placas¶
Câmara térmica FLIR Lepton.
Shield de TV — saída de vídeo composto / TV SPI.
Modo disparado de obturador global (MT9V034).
Alterações de API incompatíveis¶
Alterações de API visíveis pelo utilizador entre a v3.2.0 e a v3.3.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
major — afecta a maioria dos scripts que utilizavam a funcionalidade; será necessário portar o código.
minor — API restrita; afecta apenas os scripts que a utilizavam.
behavior — mesma API, resultados diferentes; verifique novamente 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 contém uma ligação para o respectivo diff no GitHub.
API cpufreq reformulada (major)¶
O módulo cpufreq foi reformulado para suporte do H7. As constantes cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ e cpufreq.get_frequency() foram removidas. cpufreq.set_frequency() aceita agora um inteiro simples em MHz (por exemplo, cpufreq.set_frequency(120)), e foram adicionados cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies().
Commits: 6babf84a1
Argumentos posicionais de image.replace() deslocados (minor)¶
image.replace() recebeu um argumento transpose, deslocando o argumento posicional mask da posição 4 para a posição 5. O código que passava mask posicionalmente (por exemplo, img.replace(src, hmirror, vflip, mask)) deve passar a utilizar a forma de palavra-chave img.replace(src, mask=mask).
Commits: dbe7bf059
sensor.alloc_extra_fb() já não aceita Bayer/JPEG (minor)¶
sensor.alloc_extra_fb() já não aceita sensor.BAYER nem sensor.JPEG (suporta agora também sensor.BINARY). O código que alocava framebuffers extra em formato Bayer ou JPEG deve usar GRAYSCALE / RGB565 (ou alocar o buffer de outra forma).
Commits: f9e6b3fe0
sensor.set_framesize() lança excepção em caso de falha (behavior)¶
sensor.set_framesize() lança agora uma ValueError quando o tamanho de fotograma não é suportado, em vez de devolver False. O código que verificava o valor de retorno False deve passar a capturar a excepção ValueError.
Commits: b0442633e
Lista de verificação de migração¶
Para uma portabilidade limpa para a v3.3.0, o trabalho típico é:
Portar o código
cpufreqparaset_frequency()com inteiro em MHz eget_current_frequencies()/get_supported_frequencies()(a reformulação do cpufreq).Passar
maskaimage.replace()como palavra-chave (a alteração do replace).Alocar framebuffers extra como
GRAYSCALE/RGB565em vez de Bayer/JPEG (a alteração do alloc_extra_fb).Capturar
ValueErrorem torno desensor.set_framesize()em vez de verificarFalse(a alteração do set_framesize).
Todos os outros scripts funcionam sem modificações.