sensor --- 摄像头传感器¶
自 4.5 版本弃用: sensor 模块已弃用。请改用新的 csi 模块(参见 csi --- 摄像头传感器)。本模块不会再添加新功能,并且可能在未来的版本中被移除。
sensor 模块是 OpenMV Cam 上主摄像头传感器的旧版模块级接口。每个调用都是对单个隐藏的 CSI 实例进行操作的自由函数,这限制了对多摄像头开发板的支持。保留该模块是为了向后兼容旧的 OpenMV 脚本;新代码应改用面向对象的 csi 模块。
这些函数名称沿用了较旧的 set_pixformat / set_framesize 风格。每个函数都与 csi.CSI 上的某个方法一一对应;完整的功能集和各参数说明请参见 csi 模块。
用法示例:
import sensor
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
while True:
img = sensor.snapshot()
函数¶
- sensor.snapshot() image.Image¶
使用摄像头拍摄一张照片,并返回一个
image.Image对象。如果启用了
sensor.set_auto_rotation(),则该方法返回一个已经旋转过的新image.Image对象。
- sensor.skip_frames(n: int | None = None, time: int = 300) None¶
跳过
n帧或time毫秒(以指定者为准),以便在更改摄像头设置后让摄像头图像稳定下来。如果既未指定
n也未指定time,则该方法跳过 300 毫秒的帧。如果两者都指定,则该方法跳过
n帧,但会在time毫秒后超时。
- sensor.get_fb() image.Image | None¶
返回上一次调用
sensor.snapshot()所返回的图像对象。如果之前未调用过sensor.snapshot(),则返回None。
- sensor.get_frame_available() bool¶
如果有可通过调用
sensor.snapshot()读取的帧可用,则返回True。
- sensor.alloc_extra_fb(width: int, height: int, pixformat: int) image.Image¶
自 4.5 版本弃用: 此函数已弃用,并将引发
OSError。请改用新的csi模块。
- sensor.set_pixformat(pixformat: int) None¶
设置摄像头模块的像素格式。
pixformat为以下之一:sensor.JPEG(仅适用于 OV2640/OV5640)
- sensor.set_windowing(roi: Tuple[int, int] | Tuple[int, int, int, int] | List[int]) None¶
将摄像头的分辨率设置为当前分辨率内的某个子分辨率。
roi是一个矩形元组/列表(x, y, w, h)。你也可以传入(w, h),此时roi将以帧为中心居中。这些参数也可以作为解包后的位置整数传入。
- sensor.get_windowing() Tuple[int, int, int, int]¶
返回之前用
sensor.set_windowing()设置的roi元组(x, y, w, h)。
- sensor.set_quality(quality: int) bool¶
设置摄像头图像的 JPEG 压缩质量。有效范围为
0到100。成功时返回True。仅适用于 OV2640/OV5640 摄像头。
- sensor.set_auto_gain(enable: int, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enable用于打开(1)或关闭(0)自动增益控制。如果
enable为0,你可以用gain_db设置一个固定的增益值(以分贝为单位)。如果
enable为非零值,你可以用gain_db_ceiling为自动增益控制算法设置最大增益上限(以分贝为单位)。gain_db和gain_db_ceiling都是仅限关键字参数。
- sensor.set_auto_exposure(enable: int, exposure_us: int = -1) None¶
enable用于打开(1)或关闭(0)自动曝光控制。如果
enable为0,你可以用exposure_us设置一个固定的曝光时间(以微秒为单位)。exposure_us是仅限关键字参数。
- sensor.set_auto_whitebal(enable: int, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enable用于打开(1)或关闭(0)自动白平衡。如果
enable为0,你可以用rgb_gain_db分别为红、绿、蓝通道设置固定的增益值(以分贝为单位)。rgb_gain_db是仅限关键字参数。
- sensor.set_auto_blc(enable: int, regs: List[int] | None = None) None¶
设置摄像头上的自动黑电平校准(BLC)控制。
enable为1时启用,为0时禁用。regs在禁用时使用,你可以通过之前从sensor.get_blc_regs()读取到的值手动设置 BLC 寄存器的值。列表长度必须与传感器的 BLC 寄存器数量相匹配。
- sensor.get_blc_regs() List[int]¶
以整数列表形式返回传感器的 BLC 寄存器。供
sensor.set_auto_blc()使用。
- sensor.set_transpose(enable: bool) None¶
打开(
True)或关闭(False)转置模式。默认关闭。vflip=False, hmirror=False, transpose=False -> 旋转 0 度
vflip=True, hmirror=False, transpose=True -> 旋转 90 度
vflip=True, hmirror=True, transpose=False -> 旋转 180 度
vflip=False, hmirror=True, transpose=True -> 旋转 270 度
- sensor.set_auto_rotation(enable: bool) None¶
打开(
True)或关闭(False)自动旋转模式。默认关闭。仅在 OpenMV Cam 安装了imu时才有效。
- sensor.set_framebuffers(count: int) None¶
设置用于接收图像数据的帧缓冲区数量。
count可以为1(单缓冲)、2(双缓冲)、3(三缓冲),或4及更大值,以使传感器驱动进入视频 FIFO 模式,此时接收到的帧将存储在由count个缓冲区组成的 FIFO 中。
- sensor.disable_delays(disable: bool | None = None) bool | None¶
如果
disable为True,则禁用传感器模块中的所有稳定时间延迟。如果不带参数调用,则在延迟被禁用时返回
True。
- sensor.disable_full_flush(disable: bool | None = None) bool | None¶
如果
disable为True,则禁用丢帧时的帧缓冲区自动刷新。如果不带参数调用,则在自动刷新被禁用时返回
True。
- sensor.set_special_effect(sde: int) bool¶
设置传感器上的特殊数字效果(SDE)。
sde为sensor.NORMAL或sensor.NEGATIVE之一。成功时返回True。
- sensor.set_lens_correction(enable: bool, radi: int, coef: int) bool¶
enable为True时启用,为False时禁用。radi为要校正的像素半径(整数)。coef为校正强度。成功时返回
True。
- sensor.set_vsync_callback(cb: Callable[[int], None] | None) None¶
注册回调
cb,使其在摄像头模块每生成一个新帧时(但在该帧被接收之前)于中断上下文中执行。cb接收一个参数:vsync 引脚变化后的当前状态。传入一个不可调用的值(例如
None)以取消注册。
- sensor.set_frame_callback(cb: Callable[[], None] | None) None¶
注册回调
cb,使其在摄像头模块每生成一个新帧且该帧可通过sensor.snapshot()读取时于中断上下文中执行。cb不接收任何参数。传入一个不可调用的值(例如
None)以取消注册。
- sensor.ioctl(request: int, *args: Any) Any¶
执行特定于传感器的请求。
request为IOCTL_*常量之一;其余的位置参数和返回值取决于具体请求。所支持的请求按传感器系列分组列在下面。通用(任意传感器):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))设置传感器的读出窗口。较小的窗口会以牺牲视场为代价提高帧率。
ioctl(IOCTL_GET_READOUT_WINDOW)以
(x, y, w, h)元组形式返回当前的读出窗口。ioctl(IOCTL_SET_TRIGGERED_MODE, enable)在 MT9V034 上启用(
True)或禁用(False)触发模式。ioctl(IOCTL_GET_TRIGGERED_MODE)以
bool形式返回当前的触发模式状态。ioctl(IOCTL_SET_FOV_WIDE, enable)当为
True时,指示set_framesize()优先优化视场而非帧率。ioctl(IOCTL_GET_FOV_WIDE)以
bool形式返回当前的宽视场(FOV-wide)状态。ioctl(IOCTL_SET_NIGHT_MODE, enable)启用(
True)或禁用(False)传感器的弱光“夜间模式”。仅适用于 OV7725 和 OV5640。ioctl(IOCTL_GET_NIGHT_MODE)以
bool形式返回当前的夜间模式状态。ioctl(IOCTL_GET_RGB_STATS)返回一个由从传感器读取的原始 RGB 通道统计信息组成的 4 元组
(r, gb, gr, b)(通常用于白平衡调校)。
OV5640 FPC —— 自动对焦:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)在 OV5640 FPC 模块上启动一次自动对焦扫描。
ioctl(IOCTL_PAUSE_AUTO_FOCUS)暂停正在进行的自动对焦扫描。
ioctl(IOCTL_RESET_AUTO_FOCUS)将自动对焦位置重置为默认值。
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)阻塞直到当前的自动对焦扫描完成。
timeout_ms如果省略则默认为 5000。
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)返回 Lepton 图像的宽度(以像素为单位)。
ioctl(IOCTL_LEPTON_GET_HEIGHT)返回 Lepton 图像的高度(以像素为单位)。
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)以整数形式返回 Lepton 的类型(是否为辐射测量型)。
ioctl(IOCTL_LEPTON_GET_REFRESH)返回 Lepton 的刷新率(以 Hz 为单位)。
ioctl(IOCTL_LEPTON_GET_RESOLUTION)返回 Lepton 的 ADC 分辨率(以位为单位)。
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)运行一个 FLIR Lepton SDK 命令。
cmd是由 SDK 定义的 16 位命令 id。ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)写入一个 Lepton SDK 属性。
attr_id是 16 位属性 id;payload是一个bytes/bytearray,其长度必须是 16 位的整数倍。ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)读取一个 Lepton SDK 属性。
attr_id是 16 位属性 id;words是要读取的 16 位字的数量。返回一个bytearray。ioctl(IOCTL_LEPTON_GET_FPA_TEMP)返回 Lepton 焦平面阵列的温度(以摄氏度为单位)。
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)返回 Lepton 的辅助温度(以摄氏度为单位)。
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)在 AGC 与直接温度输出之间切换 Lepton。
measurement_enabled=True启用直接温度输出。可选的high_temp_enabled标志用于选择高温量程。ioctl(IOCTL_LEPTON_GET_MODE)返回一个 2 元组
(measurement_enabled, high_temp_enabled)。ioctl(IOCTL_LEPTON_SET_RANGE, min_temp_c, max_temp_c)设置在启用测量模式时映射到
0..255的温度量程。ioctl(IOCTL_LEPTON_GET_RANGE)返回当前的
(min_celsius, max_celsius)量程。
Himax HM01B0 —— 运动检测:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)启用(
True)或禁用(False)HM01B0 的传感器内运动检测模块。ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))设置 HM01B0 上的运动检测窗口。
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)设置运动检测阈值(
0——255)。ioctl(IOCTL_HIMAX_MD_CLEAR)清除运动检测中断锁存。
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)启用(
True)或禁用(False)HM01B0 的内部振荡器。
Prophesee GENX320 —— 事件传感器:
ioctl(IOCTL_GENX320_SET_BIASES, preset)应用一个偏置预设。
preset为GENX320_BIASES_*常量之一。ioctl(IOCTL_GENX320_SET_BIAS, bias, value)设置单个偏置。
bias为GENX320_BIAS_*常量之一;value是整数设置值。ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)配置抗闪烁滤波器。
enable是一个布尔值;可选的频率参数用于设置滤波器的通带。
- sensor.set_color_palette(palette: int) None¶
为 FLIR Lepton(及类似传感器)的灰度到 RGB565 转换设置颜色调色板。
palette为image.PALETTE_RAINBOW、image.PALETTE_IRONBOW、image.PALETTE_DEPTH、image.PALETTE_EVT_DARK或image.PALETTE_EVT_LIGHT之一。
常量¶
- sensor.OV2640: int¶
对于 OV2640 摄像头,
sensor.get_id()返回此值。
- sensor.OV5640: int¶
对于 OV5640 摄像头,
sensor.get_id()返回此值。
- sensor.OV7670: int¶
对于 OV7670 摄像头,
sensor.get_id()返回此值。
- sensor.OV7690: int¶
对于 OV7690 摄像头,
sensor.get_id()返回此值。
- sensor.OV7725: int¶
对于 OV7725 摄像头,
sensor.get_id()返回此值。
- sensor.OV9650: int¶
对于 OV9650 摄像头,
sensor.get_id()返回此值。
- sensor.MT9V022: int¶
对于 MT9V022 摄像头,
sensor.get_id()返回此值。
- sensor.MT9V024: int¶
对于 MT9V024 摄像头,
sensor.get_id()返回此值。
- sensor.MT9V032: int¶
对于 MT9V032 摄像头,
sensor.get_id()返回此值。
- sensor.MT9V034: int¶
对于 MT9V034 摄像头,
sensor.get_id()返回此值。
- sensor.MT9M114: int¶
对于 MT9M114 摄像头,
sensor.get_id()返回此值。
- sensor.BOSON320: int¶
对于 BOSON 320x256 摄像头,
sensor.get_id()返回此值。
- sensor.BOSON640: int¶
对于 BOSON 640x512 摄像头,
sensor.get_id()返回此值。
- sensor.LEPTON: int¶
对于 LEPTON1/2/3 摄像头,
sensor.get_id()返回此值。
- sensor.HM01B0: int¶
对于 HM01B0 摄像头,
sensor.get_id()返回此值。
- sensor.HM0360: int¶
对于 HM0360 摄像头,
sensor.get_id()返回此值。
- sensor.GC2145: int¶
对于 GC2145 摄像头,
sensor.get_id()返回此值。
- sensor.GENX320ES: int¶
对于 GENX320(工程样片)摄像头,
sensor.get_id()返回此值。
- sensor.GENX320: int¶
对于 GENX320 摄像头,
sensor.get_id()返回此值。
- sensor.PAG7920: int¶
对于 PAG7920 摄像头,
sensor.get_id()返回此值。
- sensor.PAG7936: int¶
对于 PAG7936 摄像头,
sensor.get_id()返回此值。
- sensor.PAJ6100: int¶
对于 PAJ6100 摄像头,
sensor.get_id()返回此值。
- sensor.FROGEYE2020: int¶
对于 FROGEYE2020 摄像头,
sensor.get_id()返回此值。
- sensor.NORMAL: int¶
传入
sensor.set_special_effect()以获得正常(无 SDE)输出。
- sensor.NEGATIVE: int¶
传入
sensor.set_special_effect()以获得负片图像输出。
- sensor.B64X32: int¶
64x32 分辨率。供
Image.find_displacement()及其他基于 FFT 的算法使用。
- sensor.B64X64: int¶
64x64 分辨率。供
Image.find_displacement()及其他基于 FFT 的算法使用。
- sensor.B128X64: int¶
128x64 分辨率。供
Image.find_displacement()及其他基于 FFT 的算法使用。
- sensor.B128X128: int¶
128x128 分辨率。供
Image.find_displacement()及其他基于 FFT 的算法使用。
- sensor.IOCTL_SET_READOUT_WINDOW: int¶
设置传感器的读出窗口。参见
sensor.ioctl()。
- sensor.IOCTL_GET_READOUT_WINDOW: int¶
获取传感器的读出窗口。参见
sensor.ioctl()。
- sensor.IOCTL_SET_TRIGGERED_MODE: int¶
设置触发模式(例如用于 MT9V034)。参见
sensor.ioctl()。
- sensor.IOCTL_GET_TRIGGERED_MODE: int¶
获取当前的触发模式状态。参见
sensor.ioctl()。
- sensor.IOCTL_SET_FOV_WIDE: int¶
使
sensor.set_framesize()优先优化视场而非 FPS。参见sensor.ioctl()。
- sensor.IOCTL_GET_FOV_WIDE: int¶
获取当前“视场优先于 FPS”的优化状态。参见
sensor.ioctl()。
- sensor.IOCTL_TRIGGER_AUTO_FOCUS: int¶
在 OV5640 FPC 摄像头模块上触发自动对焦。参见
sensor.ioctl()。
- sensor.IOCTL_PAUSE_AUTO_FOCUS: int¶
在 OV5640 FPC 摄像头模块上暂停自动对焦。参见
sensor.ioctl()。
- sensor.IOCTL_RESET_AUTO_FOCUS: int¶
在 OV5640 FPC 摄像头模块上重置自动对焦。参见
sensor.ioctl()。
- sensor.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
在 OV5640 FPC 摄像头模块上等待自动对焦完成。参见
sensor.ioctl()。
- sensor.IOCTL_SET_NIGHT_MODE: int¶
启用/禁用传感器上的夜间模式。参见
sensor.ioctl()。
- sensor.IOCTL_GET_NIGHT_MODE: int¶
获取当前的夜间模式状态。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_WIDTH: int¶
获取 FLIR Lepton 图像的宽度(以像素为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_HEIGHT: int¶
获取 FLIR Lepton 图像的高度(以像素为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RADIOMETRY: int¶
获取 FLIR Lepton 的类型(是否为辐射测量型)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_REFRESH: int¶
获取 FLIR Lepton 的刷新率(以 Hz 为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RESOLUTION: int¶
获取 FLIR Lepton 的 ADC 分辨率(以位为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_RUN_COMMAND: int¶
执行一个 16 位的 FLIR Lepton SDK 命令。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
设置一个 FLIR Lepton 属性。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
获取一个 FLIR Lepton 属性。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_FPA_TEMP: int¶
获取 FLIR Lepton 的 FPA 温度(以摄氏度为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_AUX_TEMP: int¶
获取 FLIR Lepton 的 AUX 温度(以摄氏度为单位)。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_MODE: int¶
设置 FLIR Lepton 的测量模式。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_MODE: int¶
获取 FLIR Lepton 的测量模式状态。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_RANGE: int¶
设置 FLIR Lepton 测量模式的温度量程。参见
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RANGE: int¶
获取 FLIR Lepton 测量模式的温度量程。参见
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_ENABLE: int¶
启用/禁用 HM01B0 运动检测。参见
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_WINDOW: int¶
设置 HM01B0 的运动检测窗口。参见
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_THRESHOLD: int¶
设置 HM01B0 的运动检测阈值。参见
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_CLEAR: int¶
清除 HM01B0 的运动检测中断。参见
sensor.ioctl()。
- sensor.IOCTL_HIMAX_OSC_ENABLE: int¶
启用/禁用 HM01B0 的内部振荡器。参见
sensor.ioctl()。
- sensor.IOCTL_GET_RGB_STATS: int¶
从传感器获取
(r, gb, gr, b)RGB 统计信息。参见sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_BIASES: int¶
设置 GENX320 传感器的偏置预设。参见
sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_BIAS: int¶
设置单个 GENX320 传感器偏置。参见
sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_AFK: int¶
设置 GENX320 抗闪烁滤波器参数。参见
sensor.ioctl()。