6.20. Conclusão

O capítulo cobriu as partes de numpy e scipy a que uma aplicação OpenMV recorre quando uma operação não tem um método integrado na biblioteca de imagens:

  • Conceitos – o que é um ndarray, por que um buffer tipado compacto supera uma list Python para trabalho numérico, e o conjunto de dtypes que a câmara suporta.

  • Forma e indexação – vistas vs. cópias, atribuição por fatia para atualizações sem alocação, transpose() como edição de descritor.

  • Matemática – operadores elemento a elemento, funções universais como sin(), regras de broadcasting, reduções como mean(), e auxiliares de seleção como where().

  • Álgebra lineardot() para multiplicação matricial, inv() / det() para a inversa, e as decomposições e resolvedores em numpy.linalg e scipy.linalg para problemas com mais estrutura.

  • Processamento de sinalfft(), sosfilt() para filtragem digital, e spectrogram() para espectros de magnitude sem alocação num ciclo contínuo.

  • Curvas e integraçãointerp(), polyfit() / polyval(), convolve() para filtros FIR curtos, trapz() para integração trapezoidal de dados amostrados.

  • Resolvedores e números aleatóriosscipy.integrate para quadratura de um chamável Python, scipy.optimize para pesquisa de raízes e minimização, scipy.special para funções especiais estatísticas, e Generator para amostragem pseudo-aleatória.

  • Imagens – a ponte to_ndarray() e image.Image para os casos raros que a biblioteca de imagens não cobre.

  • Desempenho – dtypes pequenos, buffers pré-alocados, operadores in-place, palavras-chave out=, e atenção ao desempenho com máscaras booleanas em ciclos contínuos.

Isso cobre o trabalho numérico genérico em que o resto da câmara se apoia. numpy é a caixa de ferramentas a que uma aplicação recorre quando uma operação não tem um método integrado em Image – uma transformação personalizada de pixels, uma resolução de calibração, uma FFT de áudio em buffer.