Модуль камеры с глобальным затвором¶
Модуль камеры с глобальным затвором — это монохромный датчик, который захватывает быстрое движение без артефактов скользящего затвора. Подходит для высокоскоростного отслеживания, дронов и снимков машинного зрения. Модуль поставляется с датчиком MT9V024 или MT9V034.
Полный datasheet, фотографии и информацию для заказа см. на странице продукта Global Shutter Camera Module.
Ключевые особенности¶
Монохромный датчик 752x480 с глобальным затвором
80 FPS при QVGA, 200 FPS при QQVGA, 400 FPS при QQQVGA
Динамический диапазон 55 дБ
Совместим со всеми модульными базовыми платами OpenMV Cam
Использование¶
Потоковая передача видео в оттенках серого при 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())
Датчик автоматически активирует объединение пикселей при более низких разрешениях — 2x при QVGA (320x240) или меньше, 4x при QQVGA (160x120) или меньше — что пропорционально сокращает время считывания и повышает частоту кадров. Тем не менее камере всё равно нужно интегрировать свет в течение запрошенного окна экспозиции, поэтому сочетайте уменьшение framesize с более коротким ограничением экспозиции через csi.CSI.auto_exposure, чтобы действительно достичь более высоких частот (изображение будет темнее — рассчитывайте на дополнительное освещение):
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())
Триггерный режим выравнивает интеграцию пикселей точно с каждым вызовом csi.CSI.snapshot, поэтому захваты синхронизируются со снимком, а не со свободно идущим кадровым тактовым сигналом камеры — полезно для синхронизации с внешним событием или другим датчиком. Включите его через csi.CSI.ioctl с csi.IOCTL_SET_TRIGGERED_MODE — частота кадров падает примерно до половины от режима свободного хода, потому что считывание больше не конвейеризуется с интеграцией следующего кадра:
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())