csi — sensores de câmara¶
O módulo csi é a interface moderna e orientada a objetos para o(s) sensor(es) de câmara numa OpenMV Cam. Cada sensor físico é representado por uma instância CSI, pelo que as placas de imageamento multiespectrais que combinam um sensor de cor com um sensor térmico ou de eventos podem controlar cada um de forma independente, passando um cid diferente ao construtor. As câmaras com um único sensor apenas instanciam um CSI.
Um objeto CSI gere toda a configuração do sensor – formato de pixel, tamanho de fotograma / janela, exposição / ganho / balanço de brancos, espelho e inversão por hardware, padrão de teste de barras de cor, relógio de taxa de fotogramas, ROI para auto-exposição e comandos ioctl específicos do chip. Os fotogramas são capturados com CSI.snapshot(), que devolve um image.Image apoiado pelo buffer de fotograma.
Este módulo substitui o módulo legado sensor (que expunha a mesma funcionalidade como funções ao nível do módulo associadas a um único sensor oculto). O novo código deverá usar CSI.
Exemplo de utilização:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Utilização com Asyncio¶
O ciclo bloqueante CSI.snapshot() acima não coopera com o ciclo de eventos asyncio – enquanto snapshot aguarda pelo próximo fotograma, todas as outras corrotinas do programa ficam congeladas. Para permitir que um ciclo de captura coexista com outro trabalho concorrente (um cliente UART, um observador de botões, uma tarefa de rede), envolva CSI num pequeno adaptador que transforma snapshot numa corrotina compatível com await, sondando snapshot(blocking=False) e cedendo ao ciclo de eventos entre verificações:
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ redireciona todos os outros atributos (reset, pixformat, framesize, os controlos do sensor) para o CSI subjacente, pelo que o adaptador é um substituto direto. A primeira chamada não bloqueante também inicia a captura DMA da câmara se ainda não estiver em execução, pelo que não é necessário qualquer arranque adicional.
Um ciclo de captura encaixa então num programa asyncio maior como mais uma corrotina:
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
A definição framebuffers ainda é relevante neste padrão – o modo de buffer único faz com que snapshot(blocking=False) devolva None até que o próximo fotograma seja capturado, enquanto o buffer duplo ou triplo suaviza isso para que o adaptador geralmente encontre um fotograma em buffer à espera na primeira sondagem. Consulte o exemplo AsyncCSI no tutorial de asyncio para o guia completo.
class CSI – Interface do Sensor de Câmara¶
A classe CSI é utilizada para controlar um sensor de câmara.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Cria um objeto para comunicar com um sensor de câmara. Em placas com vários sensores, o objeto CSI em questão pode ser selecionado passando um
cidcomocsi.LEPTONpara selecionar um módulo sensor FLIR Lepton. Secidfor -1, o sensor primário é selecionado (tipicamente um módulo de câmara de cor em placas com vários sensores).Se
delaysforFalse, todos os atrasos de tempo de estabilização no controlador csi são desativados. Por padrão, o controlador do sensor aguarda após reset / mudança de modo para evitar que fotogramas corrompidos sejam devolvidos porCSI.snapshot. Desativar os atrasos permite agrupar atualizações e aplicar um único atraso no final antes de chamarCSI.snapshot.Se
fflushforFalse, a descarga automática do buffer de fotograma mencionada emCSI.framebuffersé desativada. Isto remove qualquer limite de tempo nos fotogramas na fila FIFO do buffer de fotograma.streamseleciona se este CSI é a fonte de stream enviada para o IDE. SeNone(predefinição), o CSI torna-se a fonte de stream apenas se for o sensor primário (não auxiliar). PasseTruepara forçar este CSI a ser a fonte de stream, ou qualquer valor falso para deixar a fonte de stream existente inalterada.Métodos¶
- reset(hard: bool = True) None¶
Inicializa o sensor de câmara. Efetua um reset por hardware alternando o GPIO do sinal RESET para o módulo de câmara se
hardforTrue.harddeve ser definido como falso ao reiniciar sensores de câmara auxiliares que partilham o mesmo GPIO do sinal RESET que o módulo primário.
- shutdown(enable: bool) None¶
Coloca a câmara num modo de menor consumo de energia do que o modo de suspensão (mas a câmara tem de ser reiniciada ao ser acordada).
- sleep(enable: bool) None¶
Coloca a câmara em modo de suspensão se
enablefor True. Caso contrário, acorda-a novamente.
- flush() None¶
Copia o conteúdo atual do buffer de fotograma para a pré-visualização do IDE. Chame este método após o último
CSI.snapshotse o script terminar, para que o IDE mostre o último fotograma.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Tira uma fotografia usando a câmara e devolve um objeto
image.Image.Se
timee/ouframesfor passado, snapshot bloqueará durante esse número de milissegundostimee/ouframescapturados da câmara. Ambos os argumentos podem ser usados ao mesmo tempo. Apóstimee/ouframester decorrido, snapshot devolveráNone.blockingpode serFalsepara ativar o comportamento não bloqueante, que fará com que snapshot devolvaNonequando a próxima imagem da câmara não estiver pronta, em vez de aguardar.imagepode ser outro objetoimage.Imagepara atualizar com a nova imagem capturada da câmara em vez de devolver um novo objetoimage.Image. O conteúdo da imagem anterior é substituído por uma cópia profunda.Se
CSI.auto_rotationestiver ativada, este método devolverá umimage.Imagejá rodado.
- cid() int¶
Devolve o ID do chip do módulo de câmara. Compare com qualquer um de
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020oucsi.SOFTCSI.
- readable() bool¶
Devolve
Truese houver uma imagem pronta a ser devolvida porCSI.snapshot, pelo que uma chamada a snapshot não bloqueará.
- pixformat(pixformat: int | None = None) int | None¶
Define o formato de pixel do módulo de câmara para um de
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422oucsi.JPEG(apenas no OV2640/OV5640).Devolve o pixformat atual se chamado sem argumentos.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Define o tamanho de fotograma do módulo de câmara para uma das constantes de tamanho (ex.:
csi.QVGA,csi.VGA,csi.HD, etc. — consulte a secção de constantes).Em alternativa, pode passar um tamanho de fotograma personalizado como um tuplo
(w, h). QuandoCSI.snapshoté chamado, o tamanho de fotograma personalizado será avaliado de acordo com as regras DMA. Geralmente, os tamanhos de fotograma têm de ser múltiplos de 8 pixels e/ou 16 bytes.Devolve o tamanho de fotograma atual se chamado sem argumentos.
- framerate(rate: int | None = None) int | None¶
Define a taxa de fotogramas em Hz para o módulo de câmara.
Devolve a taxa de fotogramas atual se chamado sem argumentos.
Nota
CSI.frameratefunciona descartando fotogramas recebidos pelo módulo de câmara para manter a taxa de fotogramas igual ou inferior à taxa especificada. Por padrão, a câmara funcionará à taxa de fotogramas máxima. Se implementado para o sensor de câmara em questão,CSI.frameratetambém reduzirá internamente a taxa de fotogramas do sensor de câmara para poupar energia e melhorar a qualidade de imagem ao aumentar a exposição do sensor.CSI.frameratepode entrar em conflito comCSI.auto_exposureem algumas câmaras.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Define a resolução da câmara para uma sub-região da resolução atual.
roié um tuplo(x, y, w, h). Também pode passar(w, h)e a janela será centrada.Devolve o tuplo
(x, y, w, h)atual se chamado sem argumentos.
- gainceiling(gainceiling: int) bool¶
Define o teto de ganho de imagem da câmara para um de 2, 4, 8, 16, 32, 64 ou 128.
Devolve
Trueem caso de sucesso eFalseem caso de falha.
- brightness(brightness: int) bool¶
Define o brilho da imagem da câmara.
Devolve
Trueem caso de sucesso eFalseem caso de falha.
- contrast(contrast: int) bool¶
Define o contraste da imagem da câmara.
Devolve
Trueem caso de sucesso eFalseem caso de falha.
- saturation(saturation: int) bool¶
Define a saturação da imagem da câmara.
Devolve
Trueem caso de sucesso eFalseem caso de falha.
- quality(quality: int) bool¶
Define a qualidade de compressão JPEG da imagem da câmara. 0 - 100.
Devolve
Trueem caso de sucesso eFalseem caso de falha.Nota
Apenas para as câmaras OV2640/OV5640.
- colorbar(enable: bool) bool¶
Liga (
True) ou desliga (False) o modo de barras de cor. Por padrão está desligado.Devolve
Trueem caso de sucesso eFalseem caso de falha.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enableliga (True) ou desliga (False) o controlo automático de ganho. A câmara arranca com o controlo automático de ganho ligado.Se
enableforFalse, pode definir um ganho fixo em decibéis comgain_db.Se
enableforTrue, pode definir o teto máximo de ganho em decibéis comgain_db_ceilingpara o algoritmo de controlo automático de ganho.Nota
Também é necessário desligar o balanço de brancos se pretender rastrear cores.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enableliga (True) ou desliga (False) o controlo automático de exposição. A câmara arranca com o controlo automático de exposição ligado.Se
enableforFalse, pode definir um tempo de exposição fixo em microssegundos comexposure_us.Nota
Os algoritmos de auto-exposição da câmara são bastante conservadores no que respeita ao ajuste do valor de exposição e geralmente evitam alterá-lo significativamente. Em vez disso, ajustam bastante o valor de ganho para lidar com variações de iluminação.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enableliga (True) ou desliga (False) o balanço de brancos automático. A câmara arranca com o balanço de brancos automático ligado.Se
enableforFalse, pode definir um ganho fixo em decibéis para os canais vermelho, verde e azul respetivamente comrgb_gain_db.Nota
Também é necessário desligar o controlo de ganho se pretender rastrear cores.
- rgb_gain_db() Tuple[float, float, float]¶
Devolve um tuplo
(r, g, b)com os valores atuais de ganho dos canais vermelho, verde e azul da câmara em decibéis.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Configura a calibração automática do nível de preto (BLC) na câmara.
enablepasseTrueouFalsepara ligar ou desligar a BLC. Normalmente é sempre conveniente ter esta opção ligada.regsse desativada, pode definir manualmente os valores dos registos BLC a partir de uma chamada anterior aCSI.blc_regs.
- blc_regs() List[int]¶
Devolve os registos BLC do sensor como uma lista de inteiros. Para uso com
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Liga (
True) ou desliga (False) o modo de espelho horizontal. Por padrão está desligado.Devolve a definição atual se chamado sem argumentos.
- vflip(enable: bool | None = None) bool | None¶
Liga (
True) ou desliga (False) o modo de inversão vertical. Por padrão está desligado.Devolve a definição atual se chamado sem argumentos.
- transpose(enable: bool | None = None) bool | None¶
Liga (
True) ou desliga (False) o modo de transposição. Por padrão está desligado.vflip=False, hmirror=False, transpose=False -> rotação de 0 graus
vflip=True, hmirror=False, transpose=True -> rotação de 90 graus
vflip=True, hmirror=True, transpose=False -> rotação de 180 graus
vflip=False, hmirror=True, transpose=True -> rotação de 270 graus
Devolve a definição atual se chamado sem argumentos.
- auto_rotation(enable: bool | None = None) bool | None¶
Liga (
True) ou desliga (False) o modo de rotação automática. Por padrão está desligado.Devolve a definição atual se chamado sem argumentos.
Nota
Este método só funciona quando a OpenMV Cam tem um
imuinstalado e está ativado automaticamente.
- framebuffers(count: int | None = None) int | None¶
Define o número de buffers de fotograma utilizados para receber dados de imagem. Por padrão, a OpenMV Cam tentará alocar o número máximo de buffers de fotograma que conseguir. A reafetação ocorre sempre que
CSI.pixformat,CSI.framesizeouCSI.windowsão chamados.countde 1 (buffer único), 2 (buffer duplo) ou 3 (buffer triplo) seleciona o modo de captura correspondente. Passe 4 ou mais para colocar o controlador em modo FIFO de vídeo ondecountbuffers são enfileirados — útil para gravação de vídeo num cartão SD. Em caso de descarte de fotograma, todos os buffers de fotograma exceto o ativo são limpos, pelo queCSI.snapshotdevolve sempre um fotograma recente.Devolve o count atual se chamado sem argumentos.
- special_effect(effect: int) bool¶
Define o efeito digital especial (um de
csi.NORMALoucsi.NEGATIVE).Devolve
Trueem caso de sucesso eFalseem caso de falha.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTruepara ativar,Falsepara desativar.radiraio inteiro de pixels a corrigir.coefpotência de correção.Devolve
Trueem caso de sucesso eFalseem caso de falha.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Regista o callback
cbpara ser executado (em contexto de interrupção) sempre que o módulo de câmara gerar um novo fotograma (mas antes de o fotograma ser recebido).cbrecebe um argumento e recebe o estado atual do pino vsync após a mudança.Devolve o callback registado se chamado sem argumentos. Passe qualquer valor não chamável para limpar o callback.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Regista o callback
cbpara ser executado (em contexto de interrupção) sempre que o módulo de câmara gerar um novo fotograma e o fotograma estiver pronto para ser lido viaCSI.snapshot.cbnão recebe argumentos. Use isto para agendar a leitura de um fotograma mais tarde commicropython.schedule().Devolve o callback registado se chamado sem argumentos. Passe qualquer valor não chamável para limpar o callback.
- ioctl(request: int, *args) Any¶
Executa um pedido específico do sensor.
requesté uma das constantesIOCTL_*; os restantes argumentos posicionais e o valor de retorno dependem do pedido. Os pedidos suportados estão agrupados por família de sensor abaixo.Genérico (qualquer sensor):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Define a janela de leitura do sensor. Uma janela menor aumenta a taxa de fotogramas à custa do campo de visão.
ioctl(IOCTL_GET_READOUT_WINDOW)Devolve a janela de leitura atual como um tuplo
(x, y, w, h).ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Ativa (
True) ou desativa (False) o modo disparado no MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Devolve o estado atual do modo disparado como um
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Quando
True, instruiframesize()a otimizar para o campo de visão em vez da taxa de fotogramas.ioctl(IOCTL_GET_FOV_WIDE)Devolve o estado atual de FOV amplo como um
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Ativa (
True) ou desativa (False) o «modo noturno» de baixa luminosidade do sensor. Apenas para OV7725 e OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Devolve o estado atual do modo noturno como um
bool.ioctl(IOCTL_GET_RGB_STATS)Devolve um tuplo de 4 elementos com as estatísticas brutas dos canais RGB
(r, gb, gr, b)lidas do sensor (normalmente usadas para ajuste do balanço de brancos).
OV5640 FPC – focagem automática:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Inicia uma varredura de focagem automática no módulo OV5640 FPC.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Pausa uma varredura de focagem automática em curso.
ioctl(IOCTL_RESET_AUTO_FOCUS)Repõe a posição de focagem automática para o valor predefinido.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Bloqueia até que a varredura de focagem automática atual termine.
timeout_msassume o valor predefinido de 5000 se omitido.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Devolve a largura da imagem Lepton em pixels.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Devolve a altura da imagem Lepton em pixels.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Devolve o tipo do Lepton (radiométrico ou não) como um int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Devolve a taxa de atualização do Lepton em Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Devolve a resolução ADC do Lepton em bits.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Executa um comando do SDK FLIR Lepton.
cmdé o id de comando de 16 bits definido pelo SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Escreve um atributo do SDK Lepton.
attr_idé o id de atributo de 16 bits;payloadé umbytes/bytearraycujo comprimento tem de ser múltiplo de 16 bits.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Lê um atributo do SDK Lepton.
attr_idé o id de atributo de 16 bits;wordsé o número de palavras de 16 bits a ler. Devolve umbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Devolve a temperatura do array de plano focal do Lepton em graus Celsius.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Devolve a temperatura auxiliar do Lepton em graus Celsius.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Alterna o Lepton entre AGC e saída de temperatura direta.
measurement_enabled=Trueativa a saída de temperatura direta. O sinalizador opcionalhigh_temp_enabledseleciona o intervalo de alta temperatura.ioctl(IOCTL_LEPTON_GET_MODE)Devolve um tuplo de 2 elementos
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Define o intervalo de temperatura mapeado para
0..255quando o modo de medição está ativado.ioctl(IOCTL_LEPTON_GET_RANGE)Devolve o intervalo
(min_celsius, max_celsius)atual.
Himax HM01B0 – deteção de movimento:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Ativa (
True) ou desativa (False) o bloco de deteção de movimento no próprio sensor do HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Define a janela de deteção de movimento no HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Define o limiar de deteção de movimento (
0–255).ioctl(IOCTL_HIMAX_MD_CLEAR)Limpa o latch de interrupção de deteção de movimento.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Ativa (
True) ou desativa (False) o oscilador interno do HM01B0.
Prophesee GENX320 – sensor de eventos:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Aplica um predefinido de polarização.
preseté uma das constantesGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Define uma única polarização.
biasé uma das constantesGENX320_BIAS_*;valueé a definição inteira.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Configura o filtro anti-cintilação.
enableé um bool; os argumentos de frequência opcionais definem a banda de passagem do filtro.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Configura o filtro de contraste espácio-temporal.
modeé uma das constantesGENX320_STC_*; até dois argumentos adicionais são específicos do modo.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Alterna o sensor entre os modos de fotograma e de eventos.
modeé uma das constantesGENX320_MODE_*. Para o modo de eventos,evt_resé o comprimento do eixo de linhas do buffer de eventos passado aIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Lê eventos para
buf, umndarrayuint16de forma(EVT_res, 6)ondeEVT_resé uma potência de dois entre 1024 e 65536. As colunas são:[0]– tipo de evento (PIX_OFF_EVENT/PIX_ON_EVENT/ gatilho).[1]– segundos.[2]– milissegundos.[3]– microssegundos.[4]– coordenadax.[5]– coordenaday.
Devolve o número de eventos escritos.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Devolve um
image.Imagecom o fotograma de eventos bruto do GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Desativa os pixels cujo ruído é superior a
sigmadesvios-padrão em relação à distribuição normal.iterationsé o número inteiro de passes de calibração. Devolve o número de pixels desativados.
- color_palette(palette: int | None = None) int | None¶
Define a paleta de cores a usar para coisas como a conversão FLIR Lepton em escala de cinzentos para RGB565 ou a visualização de eventos GENX320. Uma de
image.PALETTE_RAINBOW,image.PALETTE_IRONBOWe (quando suportado)image.PALETTE_DEPTH,image.PALETTE_EVT_DARKouimage.PALETTE_EVT_LIGHT.Devolve a definição atual se chamado sem argumentos.
Funções¶
Constantes¶
- csi.BINARY: int¶
Formato de pixel BINARY (bitmap). Cada pixel é 1 bit. Útil para armazenamento de máscaras; pode ser usado com
image.Image().
- csi.RGB565: int¶
Formato de pixel RGB565. Cada pixel é 16 bits (5 bits vermelho, 6 bits verde, 5 bits azul).
- csi.YUV422: int¶
Formato de pixel YUV422. Cada pixel é armazenado como um valor Y em escala de cinzentos de 8 bits seguido de valores de cor U/V alternados de 8 bits partilhados entre dois valores Y (Y1, U, Y2, V, …). Apenas alguns métodos de processamento de imagem funcionam com YUV422.
- csi.JPEG: int¶
Modo JPEG. O módulo de câmara produz imagens JPEG comprimidas. Use
CSI.qualitypara controlar a qualidade JPEG. Funciona apenas para as câmaras OV2640/OV5640.
- csi.NORMAL: int¶
Modo normal para
CSI.special_effect.
- csi.NEGATIVE: int¶
Modo negativo para
CSI.special_effect.
- csi.SXGA: int¶
Resolução 1280x1024 para o sensor de câmara. Funciona apenas para as câmaras OV2640/OV5640.
- csi.UXGA: int¶
Resolução 1600x1200 para o sensor de câmara. Funciona apenas para as câmaras OV2640/OV5640.
- csi.IOCTL_GET_TRIGGERED_MODE: int¶
Obtém o estado do modo disparado para o MT9V034. Consulte
CSI.ioctl.
- csi.IOCTL_SET_FOV_WIDE: int¶
Ativa
CSI.framesizepara otimizar para campo de visão em vez de FPS. ConsulteCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Devolve se
CSI.framesizeestá a otimizar para campo de visão em vez de FPS. ConsulteCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Aciona a focagem automática no módulo de câmara OV5640 FPC. Consulte
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Pausa a focagem automática (enquanto em execução) para o módulo de câmara OV5640 FPC. Consulte
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Repõe a focagem automática para o valor predefinido para o módulo de câmara OV5640 FPC. Consulte
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Aguarda que a focagem automática termine no módulo de câmara OV5640 FPC. Consulte
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Liga ou desliga o modo noturno. Reduz a taxa de fotogramas para aumentar a exposição dinamicamente. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Devolve a largura de resolução da imagem FLIR Lepton em pixels. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Devolve a altura de resolução da imagem FLIR Lepton em pixels. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RADIOMETRY: int¶
Devolve o tipo do FLIR Lepton (radiométrico ou não). Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Devolve a taxa de atualização do FLIR Lepton em Hz. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Devolve a resolução ADC do FLIR Lepton em bits. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_RUN_COMMAND: int¶
Executa um comando de 16 bits do SDK FLIR Lepton. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
Define um atributo do FLIR Lepton a partir do SDK FLIR Lepton. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
Obtém um atributo do FLIR Lepton a partir do SDK FLIR Lepton. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Obtém a temperatura FPA do FLIR Lepton em Celsius. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Obtém a temperatura AUX do FLIR Lepton em Celsius. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Coloca o controlador FLIR Lepton num modo em que cada pixel é um valor de temperatura. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Devolve se o modo de medição está ativado para o sensor FLIR Lepton. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Define o intervalo de temperatura mapeado para valores de pixel no modo de medição. Consulte
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RANGE: int¶
Devolve o intervalo de temperatura utilizado para o modo de medição. Consulte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_ENABLE: int¶
Controla a interrupção de deteção de movimento no HM01B0. Consulte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_WINDOW: int¶
Define a janela de deteção de movimento no HM01B0. Consulte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_THRESHOLD: int¶
Define o limiar de deteção de movimento no HM01B0. Consulte
CSI.ioctl.
- csi.IOCTL_HIMAX_MD_CLEAR: int¶
Limpa a interrupção de deteção de movimento no HM01B0. Consulte
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Define as polarizações do sensor GENX320 para um dos predefinidos
GENX320_BIASES_*. ConsulteCSI.ioctl. ApósCSI.reset, o controlador aplicacsi.GENX320_BIASES_LOW_NOISE, nãocsi.GENX320_BIASES_DEFAULT— use este ioctl para mudar para um predefinido diferente quando a aplicação precisar de maior sensibilidade ou largura de banda.
- csi.GENX320_BIASES_DEFAULT: int¶
Predefinições da folha de dados GenX320 — sensibilidade, ruído e largura de banda equilibrados para cenas gerais.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Otimizado para condições de baixa luminosidade — ambos os limiares de contraste alargados para maior sensibilidade, FO reduzido, HPF desativado para que mudanças lentas de brilho ainda sejam registadas.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Otimizado para rastrear LEDs intermitentes de alto contraste (marcadores ativos) — limiares de contraste elevados para que apenas transições nítidas disparem, FO e HPF aumentados para maximizar a largura de banda e rejeitar a deriva ambiente lenta, REFR=0 para que cada bordo de intermitência seja capturado.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Predefinição do controlador — sensibilidade inferior ao
DEFAULT(limiares de contraste elevados) e um FO mais baixo para menor atividade de ruído de fundo. Melhor para cenas estáticas ou lentas onde eventos falsos dominariam.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Otimizado para cenas de movimento rápido — FO mais alto para maior largura de banda de pixel, HPF mais alto para rejeitar mudanças lentas, REFR mais alto para um tempo morto mais longo após cada evento para que a leitura não sature.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Define uma única polarização do sensor GENX320 para um valor DAC. Passe uma constante
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPFoucsi.GENX320_BIAS_REFR) e um valor inteiro DAC. Cada polarização é independente — chame este ioctl repetidamente para ajustar apenas as polarizações necessárias após aplicar um predefinido. ConsulteCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Limiar de contraste negativo do comparador — controla o quanto um pixel tem de escurecer antes de um
csi.PIX_OFF_EVENTser disparado. Valor mais baixo = mais sensível (mais eventos).
- csi.GENX320_BIAS_DIFF_ON: int¶
Limiar de contraste positivo do comparador — controla o quanto um pixel tem de clarear antes de um
csi.PIX_ON_EVENTser disparado. Valor mais baixo = mais sensível (mais eventos).
- csi.GENX320_BIAS_FO: int¶
Frequência de corte passa-baixo do pixel — compromisso entre a largura de banda do pixel (velocidade/latência) e a atividade de ruído de fundo. Valor mais alto = resposta de pixel mais rápida, mais ruído.
- csi.GENX320_BIAS_HPF: int¶
Frequência de corte passa-alto do pixel — rejeita mudanças lentas de brilho. Valor mais alto = mudanças mais lentas filtradas (apenas transições rápidas são registadas).
- csi.GENX320_BIAS_REFR: int¶
Período refratário do pixel — tempo morto após um pixel emitir um evento durante o qual não pode disparar novamente. Valor mais alto = tempo morto mais longo, menos eventos de um pixel muito ativo.
- csi.IOCTL_GENX320_SET_AFK: int¶
Define o filtro anti-cintilação (AFK) do GENX320, que rejeita eventos de pixels que alternam a uma banda de frequência periódica (iluminação fluorescente, ecrãs controlados por LED, etc.). Passe
enable(1 para ativar, 0 para desativar) e, ao ativar, as extremidades da banda em hertz:(enable, freq_low_hz, freq_high_hz). ConsulteCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Define o modo do filtro de contraste espácio-temporal (STC) do GENX320. Passe uma constante
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) seguida dos limiares que o modo requer (em milissegundos). ConsulteCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Mantém o segundo evento de uma rajada; descarta o primeiro evento e quaisquer eventos posteriores. Recebe um parâmetro,
stc_thresholdem milissegundos — eventos dentro dessa janela de um evento anterior no mesmo pixel são considerados parte da mesma rajada.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Mantém o primeiro evento de uma rajada; descarta eventos subsequentes no mesmo pixel até que
trail_thresholdtenha decorrido. Recebe um parâmetro,trail_thresholdem milissegundos.
- csi.GENX320_STC_TRAIL: int¶
Mantém o primeiro evento de uma rajada mais as arestas subsequentes — combina
csi.GENX320_STC_ONLYecsi.GENX320_STC_TRAIL_ONLY. Recebe dois parâmetros,stc_thresholdetrail_threshold(ambos em ms); o sensor requer que os dois permaneçam dentro de uma proporção aproximada de 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Define o modo de operação do GENX320. Passe
csi.GENX320_MODE_HISTOpara o histograma de eventos no chip (a câmara comporta-se como uma câmara em escala de cinzentos normal à taxa de fotogramas configurada) oucsi.GENX320_MODE_EVENTseguido do comprimento do eixo de linhas dondarrayde eventos (uma potência de dois entre 1024 e 65536) para streaming de eventos brutos. ConsulteCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Modo histograma — os eventos são acumulados no chip em contadores por pixel e reportados como um fotograma em escala de cinzentos 320x320 à taxa configurada (~20-350 FPS). A câmara parece uma câmara normal, pelo que todas as rotinas padrão de processamento de imagem funcionam diretamente.
- csi.GENX320_MODE_EVENT: int¶
Modo de eventos — ignora o histograma no chip e transmite eventos brutos para um
ndarraynumpy com marcações de tempo de microssegundos, para aplicações que precisam de detalhe temporal completo em vez de um fotograma pré-agregado.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Lê eventos brutos para um
ndarrayuint16 de forma(EVT_res, 6)(comEVT_rescorrespondendo ao tamanho do buffer passado acsi.IOCTL_GENX320_SET_MODE). As colunas são[0]tipo de evento (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]marcação de tempo em segundos,[2]milissegundos,[3]microssegundos,[4]coordenada X (0-319),[5]coordenada Y (0-319). Devolve o número de eventos escritos no buffer, deixando as linhas mais antigas além desse count intocadas. ConsulteCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Desativa automaticamente os pixels quentes — pixels que disparam de forma espúria mesmo numa cena estática. O controlador cria um mapa de contagem de acertos por pixel 320x320, calcula a média e o desvio padrão, e desativa qualquer pixel cuja contagem exceda
mean + sigma * stddev. Passe um orçamento de contagem de eventos (eventos a contabilizar antes de calcular as estatísticas — maior = estimativa mais fiável, mais lento; ~10000 é um bom valor predefinido) e um float sigma (menor = mais agressivo, ~0.5 predefinido). Devolve o número de pixels desativados. Aponte a câmara para uma cena estática primeiro para que os eventos causados por movimento não sejam contabilizados contra pixels que estão realmente bem. ConsulteCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Devolve um
image.Imagede fotograma de eventos bruto do GENX320, com os eventos ainda na codificação nativa empacotada do chip — útil se pretender encaminhar o stream bruto para um PC para descodificação offline em vez de o processar na câmara. ConsulteCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
Tipo de evento GENX320 (coluna
[0]) — um pixel detetou uma diminuição de brilho (o limiar de contraste negativo foi cruzado). As colunas[4]/[5]transportam as coordenadas X/Y do pixel.
- csi.PIX_ON_EVENT: int¶
Tipo de evento GENX320 (coluna
[0]) — um pixel detetou um aumento de brilho (o limiar de contraste positivo foi cruzado). As colunas[4]/[5]transportam as coordenadas X/Y do pixel.
- csi.RST_TRIGGER_RISING: int¶
Tipo de evento GENX320 (coluna
[0]) — gatilho de reset de pixel, bordo ascendente. X/Y não são utilizados. Não é gerado pelo firmware neste momento.
- csi.RST_TRIGGER_FALLING: int¶
Tipo de evento GENX320 (coluna
[0]) — gatilho de reset de pixel, bordo descendente. X/Y não são utilizados. Não é gerado pelo firmware neste momento.
- csi.EXT_TRIGGER_RISING: int¶
Tipo de evento GENX320 (coluna
[0]) — o pino de gatilho externo do sensor detetou um bordo ascendente. A entrada de gatilho externo do GENX320 está ligada à linha de sincronização de fotogramas da câmara, também encaminhada para P10 no processador e no conector de pinos. X/Y não são utilizados.
- csi.EXT_TRIGGER_FALLING: int¶
Tipo de evento GENX320 (coluna
[0]) — o pino de gatilho externo do sensor detetou um bordo descendente. A entrada de gatilho externo do GENX320 está ligada à linha de sincronização de fotogramas da câmara, também encaminhada para P10 no processador e no conector de pinos. X/Y não são utilizados.