sensor

sensor 传感器模块(这里特指摄像头模块),进行摄像头配置及图像抓取等,用于控制开发板摄像头完成摄像任务。

1. 方法

1.1. 初始化单目摄像头

重置并初始化单目摄像头

sensor.reset([, freq=24000000[, set_regs=True[, dual_buff=False]]])

参数

  • freq: 设置摄像头时钟频率,频率越高帧率越高,但是画质可能更差。默认 24MHz, 如果摄像头有彩色斑点(ov7740),可以适当调低比如 20MHz
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义复位序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列
  • dual_buff: 默认为False。允许使用双缓冲,会增高帧率,但是内存占用也会增加(大约为384KiB)

返回值

1.2. 重置双目摄像头

重置并初始化双目摄像头

K210 只有一个 DVP 接口,同一时间只能控制一个 Sensor。但是我们可以借助 shudown 方法控制 PWDN 引脚以选择特定的 Sensor。 指定 Sensor 后其余操作不变。详见

例程 2

sensor.binocular_reset()

参数

返回值

1.3. 设置帧大小

用于设置摄像头输出帧大小,k210最大支持VGA格式,大于VGA将无法获取图像

MaixPy开发板配置的屏幕是320*240分辨率,推荐设置为QVGA格式

sensor.set_framesize(framesize[, set_regs=True])

参数

  • framesize: 帧大小
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义设置帧大小的序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列

返回值

  • True : 设置成功
  • False: 设置错误

1.4. 设置帧格式

用于设置摄像头输出格式

MaixPy开发板配置的屏幕使用的是RGB565,推荐设置为RGB565格式

sensor.set_pixformat(format[, set_regs=True])

参数

  • format: 帧格式
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义设置像素格式的序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列

可选的帧格式有GRAYSCALE, RGB565, YUV422

返回值

  • True : 设置成功
  • False: 设置错误

1.5. 图像捕捉控制

图像捕捉功能控制

sensor.run(enable)

参数

  • enable: 1 表示开始抓取图像 0 表示停止抓取图像

返回值

  • True : 设置成功
  • False: 设置错误

1.6. 拍摄图像

使用摄像头拍摄一张照片

sensor.snapshot()

参数

返回值

  • img: 返回的图像对象

1.7. 摄像头控制

关闭摄像头/切换摄像头

sensor.shutdown(enable/select)

参数

单目摄像头

  • enable: True 表示开启摄像头 False 表示关闭摄像头

双目摄像头

  • select: 通过写入 0 或 1 来切换摄像头

返回值

1.8. 跳帧

跳过指定帧数或者跳过指定时间内的图像,让相机图像在改变相机设置后稳定下来

sensor.skip_frames(n, [, time])

参数

  • n: 跳过 n 帧图像

  • time: 跳过指定时间,单位为ms

若 n 和 time 皆未指定,该方法跳过300毫秒的帧;若二者皆指定,该方法会跳过 n 数量的帧,但将在 time 毫秒后返回

返回值

1.9. 分辨率宽度

获取摄像头分辨率宽度

sensor.width()

参数

返回值

  • int类型的摄像头分辨率宽度

1.10. 分辨率高度

获取摄像头分辨率高度

sensor.height()

参数

返回值

  • int类型的摄像头分辨率高度

1.11. 获取帧缓冲

获取当前帧缓冲区

sensor.get_fb()

参数

返回值

  • image类型的对象

1.12. 获取ID

获取当前摄像头ID

sensor.get_id()

参数

返回值

  • int类型的ID

1.13. 设置彩条测试模式

将摄像头设置为彩条测试模式

开启彩条测试模式后,摄像头会输出一彩条图像,常用来检测摄像机总线是否连接正确。

sensor.set_colorbar(enable)

参数

  • enable: 1 表示开启彩条测试模式 0 表示关闭彩条测试模式

返回值

1.14. 设置对比度

设置摄像头对比度

sensor.set_contrast(contrast)

参数

  • constrast: 摄像头对比度,范围为[-2,+2]

返回值

  • True : 设置成功
  • False: 设置错误

1.15. 设置亮度

设置摄像头亮度

sensor.set_brightness(brightness)

参数

  • constrast: 摄像头亮度,范围为[-2,+2]

返回值

  • True : 设置成功
  • False: 设置错误

1.16. 设置饱和度

设置摄像头饱和度

sensor.set_saturation(saturation)

参数

  • constrast: 摄像头饱和度,范围为[-2,+2]

返回值

  • True : 设置成功
  • False: 设置错误

1.17. 设置自动增益

设置摄像自动增益模式

sensor.set_auto_gain(enable,gain_db)

参数

  • enable: 1 表示开启自动增益 0 表示关闭自动增益
  • gain_db: 关闭自动增益时,设置的摄像头固定增益值,单位为dB

如果需要追踪颜色,需要关闭自动增益

返回值

1.18. 获取增益值

获取摄像头增益值

sensor.get_gain_db()

参数

返回值

  • float类型的增益值

1.19. 设置水平镜像

设置摄像头水平镜像

sensor.set_hmirror(enable)

参数

  • enable: 1 表示开启水平镜像 0 表示关闭水平镜像

返回值

1.20. 设置摄像头垂直翻转

设置摄像头垂直翻转

sensor.set_vflip(enable)

参数

  • enable: 1 表示开启垂直翻转 0 表示关闭垂直翻转

返回值

1.21. 写入寄存器

往摄像头寄存器写入指定值

sensor.__write_reg(address, value)

参数

  • address: 寄存器地址
  • value : 写入值

返回值

请参阅摄像头数据手册以获取详细信息

1.22. 读取寄存器

读取摄像头寄存器值

sensor.__read_reg(address)

参数

  • address: 寄存器地址

返回值

  • int类型的寄存器值

请参阅摄像头数据手册以获取详细信息

2. 例程

2.1. 例程 1

# 单目摄像头

import sensor
import lcd

lcd.init()

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

while True:
    img = sensor.snapshot()
    lcd.display(img)

2.2. 例程 2

# 双目摄像头

import sensor
import image
import lcd
import time

lcd.init()

sensor.binocular_reset()
sensor.shutdown(0)  # 选中sensor 0
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)

sensor.shutdown(1)  # 选中sensor 1
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

while True:
    sensor.shutdown(0)  # 选中sensor 0
    img = sensor.snapshot()
    lcd.display(img)
    time.sleep_ms(100)

    sensor.shutdown(1)  # 选中sensor 1
    img = sensor.snapshot()
    lcd.display(img)
    time.sleep_ms(100)
powered by GitbookFile Modify: 2020-09-23 03:19:06

results matching ""

    No results matching ""