triggered_mode.py
# Este trabalho está licenciado sob a licença MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos os direitos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemplo de modo acionado por gatilho com obturador global
#
# Este exemplo demonstra a configuração da câmera de obturador global no modo acionado por gatilho. No modo acionado por gatilho
# snapshot() controla EXATAMENTE quando a integração dos pixels da câmera começa, permitindo sincronizar
# a captura de imagens com algum movimento externo. Como a câmera captura todos os pixels ao mesmo tempo
# (por se tratar de uma câmera de obturador global em vez de obturador rolante), o movimento na imagem
# só será capturado durante o tempo de integração, e não pelo tempo de integração multiplicado pelo número
# de linhas da imagem. Além disso, o ruído do sensor é reduzido no modo acionado por gatilho, pois a câmera
# não lê as linhas até depois da exposição, resultando em uma imagem de maior qualidade.
#
# Dito isso, sua taxa de quadros máxima será reduzida de 2 a 3 vezes, pois os quadros deixam de ser gerados
# continuamente pela câmera e porque é preciso aguardar o término da integração antes
# da leitura do quadro.
import csi
import time
csi0 = csi.CSI()
csi0.reset() # Reinicia e inicializa o sensor.
csi0.pixformat(csi.GRAYSCALE) # Define o formato de pixel para GRAYSCALE
csi0.framesize(csi.VGA) # Define o tamanho do quadro para VGA (640x480)
csi0.snapshot(time=2000) # Aguarda as configurações fazerem efeito.
clock = time.clock() # Cria um objeto clock para rastrear o FPS.
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # Atualiza o clock de FPS.
img = csi0.snapshot() # Tira uma foto e retorna a imagem.
print(clock.fps()) # NOTA: A OpenMV Cam roda cerca de metade da velocidade quando conectada
# ao IDE. O FPS deve aumentar assim que desconectada.