Módulo de Câmera Global Shutter¶
O Módulo de Câmera Global Shutter é um sensor monocromático que captura movimento rápido sem artefatos de rolling-shutter. Adequado para rastreamento de alta velocidade, drones e snapshots de visão de máquina. O módulo é fornecido com o sensor MT9V024 ou MT9V034.
Para o datasheet completo, fotos e informações de compra, consulte a página do produto Módulo de Câmera Global Shutter.
Destaques¶
Sensor monocromático global-shutter de 752x480
80 FPS em QVGA, 200 FPS em QQVGA, 400 FPS em QQQVGA
Faixa dinâmica de 55 dB
Compatível com todas as placas-base modulares da OpenMV Cam
Uso¶
Transmita vídeo em escala de cinza a 320x240 (QVGA):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
O sensor ativa automaticamente o binning de pixels em resoluções mais baixas — 2x em QVGA (320x240) ou menor, 4x em QQVGA (160x120) ou menor — o que reduz proporcionalmente o tempo de leitura e eleva a taxa de quadros. No entanto, a câmera ainda precisa integrar luz pela janela de exposição solicitada, então combine a redução do framesize com um limite de exposição mais curto via csi.CSI.auto_exposure para realmente atingir as taxas mais altas (a imagem ficará mais escura — planeje iluminação extra):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000) # let auto-exposure settle
csi0.auto_exposure(True, exposure_us=5000) # cap exposure
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
O modo acionado (triggered) alinha a integração de pixels exatamente com cada chamada csi.CSI.snapshot, de modo que as capturas se sincronizam com o snapshot em vez do clock de quadro de execução livre da câmera — útil para sincronizar com um evento externo ou outro sensor. Habilite-o através de csi.CSI.ioctl com csi.IOCTL_SET_TRIGGERED_MODE — a taxa de quadros cai para aproximadamente metade do modo de execução livre porque a leitura não faz mais pipeline com a integração do próximo quadro:
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=2000)
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())