triggered_mode.py
# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 全局快门触发模式示例
#
# 此示例展示了如何将全局快门相机设置为触发模式。在触发模式下,
# snapshot()可以精确控制相机像素开始积分的时刻,从而让拍照
# 与某些外部运动同步。由于相机同时捕获所有像素
# (它是全局快门相机而非卷帘快门相机),图像中的运动
# 只会在积分时间内被捕获,而不是积分时间乘以
# 图像行数。此外,触发模式下传感器噪声也会降低,因为相机
# 会在曝光完成后才读出各行,从而获得更高质量的图像。
#
# 话虽如此,最大帧率会降低2到3倍,因为相机不再连续
# 生成帧,而且您必须等待积分完成后
# 才能读出帧。
import csi
import time
csi0 = csi.CSI()
csi0.reset() # 重置并初始化传感器。
csi0.pixformat(csi.GRAYSCALE) # 将像素格式设置为灰度
csi0.framesize(csi.VGA) # 将帧大小设置为VGA (640x480)
csi0.snapshot(time=2000) # 等待设置生效。
clock = time.clock() # 创建一个时钟对象来跟踪FPS。
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # 更新FPS时钟。
img = csi0.snapshot() # 拍照并返回图像。
print(clock.fps()) # 注意:OpenMV摄像头在连接至IDE时运行速度会降低约一半。
# 断开连接后,帧率应会提升。