sensor — 感光元件

sensor 模块用于拍摄照片。

用法示例:

import sensor

# Setup camera. 设置相机
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames()

# Take pictures. 拍照。

while(True):
    sensor.snapshot()

函数

sensor.reset()

初始化相机传感器。

sensor.sensor_sleep(enable)

如果enable为True,则将相机置于睡眠状态。 否则,将其唤醒。

sensor.flush()

将帧缓冲区中的内容复制到IDE中。若其未运行无限循环的脚本,您应调用该方法来显示您的OpenMV Cam拍摄的最后一张照片。 请注意,脚本完成后,您需要在延迟时间约一秒后让IDE从相机中抓取图像。 否则,此方法将不起作用。

sensor.snapshot()

使用相机拍摄一张照片,并返回 image 对象。 OpenMV有两个图像存储区。用于正常MicroPython处理的经典堆栈/堆区可以将小图像存储在堆中。 但是,MicroPython堆只有大约100KB,这不足以存储更大的图像。因此,您的OpenMV Cam有一个辅助帧缓冲存储区, 用于存储 sensor.snapshot() 所拍摄的图像。 图像存储在该存储区域的底部。 剩下的任何内存都可供帧缓冲区堆栈使用,OpenMV Cam的固件使用它来保存用于图像处理算法的大型临时数据结构。

如果你需要空间来容纳多个帧,你可以通过调用 sensor.alloc_extra_fb() 来“偷走”帧缓冲区空间。

sensor.skip_frames([n, time])

使用 n 个快照,让相机图像在改变相机设置后稳定下来。 n 作为普通参数传输, 例如: skip_frames(10) 跳过 10 帧。您应在改变相机设置后调用该函数。

或者,您可通过关键字参数 time 来跳过几毫秒的帧数,例如: kip_frames(time = 2000) ,跳过2000毫秒的帧。

ntime 皆未指定,该方法跳过300毫秒的帧。

若二者皆指定,该方法会跳过 n 数量的帧,但将在 time 毫秒后超时。

sensor.width()

返回传感器的分辨率宽度。

sensor.height()

返回传感器的分辨率高度。

sensor.get_fb()

(获取帧缓冲区)返回由先前调用的 sensor.snapshot() 所返回的图像对象。 若此前未调用过 sensor.snapshot() ,则返回 None

sensor.get_id()

返回相机模块ID。

sensor.alloc_extra_fb(width, height, pixformat)

为帧缓冲区堆栈中的图像存储分配另一个帧缓冲区, 并返回一个 width, height, pixformat 图像对象。

只要有可用内存分配任意数量的额外帧缓冲区,您可以随意调用此函数。

注解

创建辅助图像通常需要在具有有限数量的RAM的堆上创建它们。 但是,也会被分割,使得难以抓取大型连续存储器阵列来存储图像。使用此方法,您可以分配 非常大的存储器阵列, 通过从我们用于计算机视觉算法的帧缓冲区堆栈存储器中获取空间而立即获得图像。 也就是说, 这也意味着如果您尝试执行更多内存密集型机器视觉算法(如 image.find_apriltags ),则会更容易耗尽内存。

sensor.dealloc_extra_db()

取消分配先前分配的最后一个帧缓冲区。额外的帧缓冲区以结构形式存储在堆栈中。

注解

您的OpenMV有两个内存区域。 首先,你有你的经典 .data/.bss/heap/stack存储区。 .data/.bss/heap堆区域由固件修复。堆栈然后增长下来,直到它碰到堆。 接下来,帧缓冲区被存储在辅助存储区域中。内存与底部的主要帧缓冲区和顶部的帧缓冲区堆栈有关。 当调用snapshot()时,它会从底部填充帧缓冲区。帧缓冲区堆栈可以使用剩下的任何东西。这种内存分配方法对微控制器上的计算机视觉非常有效。

sensor.set_pixformat(pixformat)

设置相机模块的像素模式。

sensor.set_framesize(framesize)

设置相机模块的帧大小。

sensor.set_windowing(roi)

将相机的分辨率设置为当前分辨率的子分辨率。例如:将分辨率设置为 sensor.VGA ,然后将windowing设置为(120, 140, 200, 200), 设置 sensor.snapshot() 以捕捉由相机传感器输出的VGA分辨率的200x200中心像素。您可使用窗口来获得定制的分辨率。另外, 当你在更大分辨率下使用窗口时,实际上是进行数字缩放。

roi 是矩形区域元组 (x, y, w, h). 然而,你可以只传递 (w,h),而 roi 将会在图像中居中。

sensor.set_gainceiling(gainceiling)

设置相机图像增益上限。2, 4, 8, 16, 32, 64, 128。

sensor.set_contrast(constrast)

设置相机图像对比度。-3至+3。

sensor.set_brightness(brightness)

设置相机图像亮度。-3至+3。

sensor.set_saturation(saturation)

设置相机图像饱和度。-3至+3。

sensor.set_quality(quality)

设置相机图像JPEG压缩质量。0-100。

注解

是用于OV2640相机。

sensor.set_colorbar(enable)

打开(True)或关闭(False)彩色模式。默认关闭。

sensor.set_auto_gain(enable[, gain_db=-1[, gain_db_ceiling]])

enable 打开(True)或关闭(False)自动增益。默认打开。 value 强迫增益值。更多细节请参见摄像头数据表。

如果 enable 为False,则可以使用 gain_db 设置固定增益,单位为分贝。

如果 enable 为True,您可以使用``gain_db_ceiling``设置自动增益控制算法的最大增益上限,以分贝为单位。

注解

若您想追踪颜色,则需关闭白平衡。

sensor.get_gain_db()

以分贝(浮点数)返回当前摄像机增益值。

sensor.set_auto_exposure(enable[, exposure_us])

enable 打开(True)或关闭(False)自动曝光。默认打开。

如果 enable 为False, 则可以用 exposure_us 设置一个固定的曝光时间(以微秒为单位)。

注解

相机自动曝光算法对于调整曝光值的次数非常保守,通常会避免更改曝光值。 相反,他们改变增益值与改变照明有很大关系。

sensor.get_exposure_us()

以微秒(int)返回当前相机的曝光值。

sensor.set_auto_whitebal(enale[, rgb_gain_db])

enable 打开(True)或关闭(False)自动白平衡。默认打开。 如果 enable 为False,则可以用 rgb_gain_db 分别设置红色,绿色和蓝色通道的固定增益分贝。

注解

若您想追踪颜色,则需关闭白平衡。

sensor.get_rgb_gain_db()

返回当前摄像机红色,绿色和蓝色增益值以分贝((浮点型,浮点型,浮点型))表示的元组。

sensor.set_hmirror(enable)

打开(True)或关闭(False)水平镜像模式。默认关闭。

sensor.set_vflip(enable)

打开(True)或关闭(False)垂直翻转模式。默认关闭。

sensor.set_lens_correction(enable, radi, coef)

enable True为启用,False为禁用(布尔值)。 radi 像素的整数半径调整(int)。 coef 功率校正(int)。

sensor.set_vsync_output(pin_object)

pyb.Pin() 创建 pin_object 。相机上的VSYNC信号将会在此引脚上生成,从而在另一个OpenMV Cam上实现FSIN, 从而同步相机图像流,以用于立体视觉应用。

sensor.__write_reg(address, value)

address(int) 向相机寄存器中写入 value (int)

注解

请参阅摄像头数据表以获得注册信息。

sensor.__read_reg(address)

address (int)上读取摄像头数据表。

注解

请参阅摄像头数据表以获得注册信息。

常量

sensor.BAYER

RAW BAYER图象像素格式。 如果您尝试将帧大小设置得太大以至于无法放入帧缓冲区,则OpenMV Cam会将像素格式设置为BAYER, 以便您可以捕捉图像,但是不会有图像处理方法可用。

sensor.GRAYSCALE

GRAYSCALE像素模式(Y from YUV422)。每像素为8位、1字节。

我们所有的计算机视觉算法在灰度图像上比在RGB565图像上运行更快。

sensor.RGB565

RGB565像素模式。每像素为16位、2字节。5位用于红色,6位用于绿色,5位用于蓝色。

我们所有的计算机视觉算法在RGB565图像上比在灰度图像上运行更慢。

sensor.JPEG

JPEG模式。只适用于OV2640相机。

sensor.OV9650

sensor.get_id() 返回此以适用于OV9650 相机。

sensor.OV2640

sensor.get_id() 返回此以适用于OV2640相机。

sensor.OV7725

sensor.get_id() 返回此以适用于OV7725相机。

sensor.MT9V034

sensor.get_id() 返回此适用于MT9V034相机。

sensor.LEPTON

sensor.get_id() 返回此适用于LEPTON1/2/3相机。

sensor.QQCIF

88x72 分辨率的相机传感器。

sensor.QCIF

176x144 分辨率的相机传感器。

sensor.CIF

352x288 分辨率的相机传感器。

sensor.QQSIF

88x60 分辨率的相机传感器。

sensor.QSIF

176x120 分辨率的相机传感器。

sensor.SIF

352x240 分辨率的相机传感器。

sensor.QQQQVGA

40x30 分辨率的相机传感器。

sensor.QQQVGA

80x60 分辨率的相机传感器。

sensor.QQVGA

160x120 分辨率的相机传感器。

sensor.QVGA

320x240 分辨率的相机传感器。

sensor.VGA

640x480 分辨率的相机传感器。 只适用于OV2640相机或OpenMV Cam M7。

sensor.HQQQVGA

60x40 分辨率的相机传感器。

sensor.HQQVGA

120x80 分辨率的相机传感器。

sensor.HQVGA

240x160 分辨率的相机传感器。

sensor.B64x32

64x32 分辨率的相机传感器 (与 image.find_displacement 结合使用)。

用于 image.find_displacement() 和任何其他基于FFT的算法。

sensor.B64x64

64x64 分辨率的相机传感器。

用于 image.find_displacement() 和任何其他基于FFT的算法。

sensor.B128x64

128X64 分辨率的相机传感器。

用于 image.find_displacement() 和任何其他基于FFT的算法。

sensor.B128x128

128X128 分辨率的相机传感器。

用于 image.find_displacement() 和任何其他基于FFT的算法。

sensor.LCD

128x160 分辨率的相机传感器(用于lcd扩展板)。

sensor.QQVGA2

128x160 分辨率的相机传感器(用于lcd扩展板)。

sensor.WVGA

720x480 分辨率的相机传感器。 只适用于MT9V034相机。

sensor.WVGA2

752x480 分辨率的相机传感器。 只适用于MT9V034相机。

sensor.SVGA

800x600 分辨率的相机传感器。 只适用于OV2640相机。

sensor.SXGA

1280x1024 分辨率的相机传感器。 只适用于OV2640相机。

sensor.UXGA

1600x1200 分辨率的相机传感器。 只适用于OV2640相机。