:mod:`sensor` --- 感光元件 =============================== .. module:: sensor :synopsis: 感光元件 ``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() 函数 --------- .. function:: sensor.reset() 初始化相机传感器。 .. function:: sensor_sleep(enable) 如果enable为True,则将相机置于睡眠状态。 否则,将其唤醒。 .. function:: sensor.shutdown(enable) 使相机进入比睡眠状态低的功耗模式(但相机必须在被唤醒时重置)。 .. function:: sensor.flush() 将帧缓冲区中的内容复制到IDE中。若其未运行无限循环的脚本,您应调用该方法来显示您的OpenMV Cam拍摄的最后一张照片。 请注意,脚本完成后,您需要在延迟时间约一秒后让IDE从相机中抓取图像。 否则,此方法将不起作用。 .. function:: sensor.snapshot() 使用相机拍摄一张照片,并返回 ``image`` 对象。 OpenMV有两个图像存储区。用于正常MicroPython处理的经典堆栈/堆区可以将小图像存储在堆中。 但是,MicroPython堆只有大约100KB,这不足以存储更大的图像。因此,您的OpenMV Cam有一个辅助帧缓冲存储区, 用于存储 `sensor.snapshot()` 所拍摄的图像。 图像存储在该存储区域的底部。 剩下的任何内存都可供帧缓冲区堆栈使用,OpenMV Cam的固件使用它来保存用于图像处理算法的大型临时数据结构。 如果你需要空间来容纳多个帧,你可以通过调用 `sensor.alloc_extra_fb()` 来“偷走”帧缓冲区空间。 如果 `sensor.set_auto_rotation()` 被启用,这个方法将返回一个新的已经旋转过的 `image` 对象。 .. note:: `sensor.snapshot()` 可以应用裁剪参数来适应可用RAM中的快照,包括像素格式、帧大小、窗口和帧缓冲区。 裁剪参数将被应用以保持纵横比,并将一致保持到调用 `sensor.set_framesize()` 或 `sensor.set_windowing()` 。 .. function:: sensor.skip_frames([n, time]) 使用 ``n`` 个快照,让相机图像在改变相机设置后稳定下来。 ``n`` 作为普通参数传输, 例如: ``skip_frames(10)`` 跳过 ``10`` 帧。您应在改变相机设置后调用该函数。 或者,您可通过关键字参数 ``time`` 来跳过几毫秒的帧数,例如: ``kip_frames(time = 2000)`` ,跳过2000毫秒的帧。 若 ``n`` 和 ``time`` 皆未指定,该方法跳过300毫秒的帧。 若二者皆指定,该方法会跳过 ``n`` 数量的帧,但将在 ``time`` 毫秒后超时。 .. note:: `sensor.snapshot()` 可以应用裁剪参数来适应可用RAM中的快照,包括像素格式、帧大小、窗口和帧缓冲区。 裁剪参数将被应用以保持纵横比,并将一致保持到调用 `sensor.set_framesize()` 或 `sensor.set_windowing()` 。 .. function:: sensor.width() 返回传感器的分辨率宽度。 .. function:: sensor.height() 返回传感器的分辨率高度。 .. function:: sensor.get_fb() (获取帧缓冲区)返回由先前调用的 `sensor.snapshot()` 所返回的图像对象。 若此前未调用过 `sensor.snapshot()` ,则返回 ``None`` 。 .. function:: sensor.get_id() 返回相机模块ID。 * `sensor.OV9650`: 第一代OpenMV Cam的感光元件 - 不再发布. * `sensor.OV2640`: 第二代OpenMV Cam的感光元件 - 不再发布. * `sensor.OV5640`: 高分辨率OpenMV Cam H7传感器。 * `sensor.OV7725`: 卷帘快门. * `sensor.OV7690`: OpenMV Cam Micro传感器模块。 * `sensor.MT9V034`: 全局快门. * `sensor.MT9M114`: 新的卷帘快门传感器模块。 * `sensor.LEPTON`: Lepton1/2/3 感光元件. * `sensor.HM01B0`: Arduino Portenta H7传感器模块。 .. function:: sensor.alloc_extra_fb(width, height, pixformat) 为帧缓冲区堆栈中的图像存储分配另一个帧缓冲区, 并返回一个 ``width``, ``height``, ``pixformat`` 图像对象。 只要有可用内存分配任意数量的额外帧缓冲区,您可以随意调用此函数。 如果 ``pixformat`` 是一个数字 >= 4,然后这将分配一个JPEG图像。 然后可以执行 `image.bytearray()` 来获得对JPEG图像的字节级读写访问。 .. note:: 创建辅助图像通常需要在具有有限数量的RAM的堆上创建它们。 但是,也会被分割,使得难以抓取大型连续存储器阵列来存储图像。使用此方法,您可以分配 非常大的存储器阵列, 通过从我们用于计算机视觉算法的帧缓冲区堆栈存储器中获取空间而立即获得图像。 也就是说, 这也意味着如果您尝试执行更多内存密集型机器视觉算法(如 `image.find_apriltags` ),则会更容易耗尽内存。 .. function:: sensor.dealloc_extra_fb() 取消分配先前分配的最后一个帧缓冲区。额外的帧缓冲区以结构形式存储在堆栈中。 .. note:: 您的OpenMV有两个内存区域。 首先,你有你的经典 .data/.bss/heap/stack存储区。 .data/.bss/heap堆区域由固件修复。堆栈然后增长下来,直到它碰到堆。 接下来,帧缓冲区被存储在辅助存储区域中。内存与底部的主要帧缓冲区和顶部的帧缓冲区堆栈有关。 当调用snapshot()时,它会从底部填充帧缓冲区。帧缓冲区堆栈可以使用剩下的任何东西。这种内存分配方法对微控制器上的计算机视觉非常有效。 .. function:: sensor.set_pixformat(pixformat) 设置相机模块的像素模式。 * `sensor.GRAYSCALE`: 8 bits/像素。 * `sensor.RGB565`: 16 bits/像素。 * `sensor.BAYER`: 8 bits每像素的bayer格式。 * `sensor.JPEG`: JPEG压缩数据。仅适用于OV2640/OV5640。 如果您试图使用OV2640或OV5640相机模块的较高分辨率拍摄JPEG图像, 你应该将像素格式设置为 `sensor.JPEG` 。 然后你可以使用控制图像质量 `sensor.set_quality()` 。 .. function:: sensor.get_pixformat() 返回相机模块的像素格式。 .. function:: sensor.set_framesize(framesize) 设置相机模块的帧大小。 * `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 * `sensor.HQQQVGA`: 60x40 * `sensor.HQQVGA`: 120x80 * `sensor.HQVGA`: 240x160 * `sensor.B64X32`: 64x32 (for use with `image.find_displacement()`) * `sensor.B64X64`: 64x64 (for use with `image.find_displacement()`) * `sensor.B128X64`: 128x64 (for use with `image.find_displacement()`) * `sensor.B128X128`: 128x128 (for use with `image.find_displacement()`) * `sensor.MT9M114`: New Rolling shutter sensor module. * `sensor.LCD`: 128x160 (for use with the lcd shield) * `sensor.QQVGA2`: 128x160 (for use with the lcd shield) * `sensor.WVGA`: 720x480 (for the MT9V034) * `sensor.WVGA2`:752x480 (for the MT9V034) * `sensor.SVGA`: 800x600 (only for the OV2640/OV5640 sensor) * `sensor.XGA`: 1024x768 (only for the OV2640/OV5640 sensor) * `sensor.SXGA`: 1280x1024 (only for the OV2640/OV5640 sensor) * `sensor.UXGA`: 1600x1200 (only for the OV2640/OV5640 sensor) * `sensor.HD`: 1280x720 (only for the OV2640/OV5640 sensor) * `sensor.FHD`: 1920x1080 (only for the OV5640 sensor) * `sensor.QHD`: 2560x1440 (only for the OV5640 sensor) * `sensor.QXGA`: 2048x1536 (only for the OV5640 sensor) * `sensor.WQXGA`: 2560x1600 (only for the OV5640 sensor) * `sensor.WQXGA2`: 2592x1944 (only for the OV5640 sensor) .. function:: sensor.get_framesize() 返回相机模块的帧大小。 .. function:: sensor.set_framerate(rate) 在 HM01B0 上以赫兹为单位设置帧速率。 可以是 15、30、60 或 120 Hz。 .. function:: sensor.get_framerate() 返回 HM01B0 上以赫兹为单位的帧速率。 .. function:: sensor.set_windowing(roi) 将相机的分辨率设置为当前分辨率的子分辨率。例如:将分辨率设置为 `sensor.VGA` ,然后将windowing设置为(120, 140, 200, 200), 设置 `sensor.snapshot()` 以捕捉由相机传感器输出的VGA分辨率的200x200中心像素。您可使用窗口来获得定制的分辨率。另外, 当你在更大分辨率下使用窗口时,实际上是进行数字缩放。 ``roi`` 是矩形区域元组 (x, y, w, h). 然而,你可以只传递 (w,h),而 ``roi`` 将会在图像中居中。您也可以不通过括号传递 roi。 此函数将自动处理把传递的 roi 裁剪为帧大小。 .. function:: sensor.get_windowing() 返回先前用 `sensor.set_windowing()` 设置的 ``roi`` 元组 (x, y, w, h)。 .. function:: sensor.set_gainceiling(gainceiling) 设置相机图像增益上限。2, 4, 8, 16, 32, 64, 128。 .. function:: sensor.set_contrast(constrast) 设置相机图像对比度。-3至+3。 .. function:: sensor.set_brightness(brightness) 设置相机图像亮度。-3至+3。 .. function:: sensor.set_saturation(saturation) 设置相机图像饱和度。-3至+3。 .. function:: sensor.set_quality(quality) 设置相机图像JPEG压缩质量。0-100。 .. note:: Only for the OV2640/OV5640 cameras. 仅适用于OV2640/OV5640相机。 .. function:: sensor.set_colorbar(enable) 打开(True)或关闭(False)彩色模式。默认关闭。 .. function:: sensor.set_auto_gain(enable, [gain_db=-1, [gain_db_ceiling]]) ``enable`` 打开(True)或关闭(False)自动增益。默认打开。 ``value`` 强迫增益值。更多细节请参见摄像头数据表。 如果 ``enable`` 为False,则可以使用 ``gain_db`` 设置固定增益,单位为分贝。 如果 ``enable`` 为True,您可以使用``gain_db_ceiling``设置自动增益控制算法的最大增益上限,以分贝为单位。 .. note:: 若您想追踪颜色,则需关闭白平衡。 .. function:: sensor.get_gain_db() 以分贝(浮点数)返回当前摄像机增益值。 .. function:: sensor.set_auto_exposure(enable, [exposure_us]) ``enable`` 打开(True)或关闭(False)自动曝光。默认打开。 如果 ``enable`` 为False, 则可以用 ``exposure_us`` 设置一个固定的曝光时间(以微秒为单位)。 .. note:: 相机自动曝光算法对于调整曝光值的次数非常保守,通常会避免更改曝光值。 相反,他们改变增益值与改变照明有很大关系。 .. function:: sensor.get_exposure_us() 以微秒(int)返回当前相机的曝光值。 .. function:: sensor.set_auto_whitebal(enale, [rgb_gain_db]) ``enable`` 打开(True)或关闭(False)自动白平衡。默认打开。 如果 ``enable`` 为False,则可以用 ``rgb_gain_db`` 分别设置红色,绿色和蓝色通道的固定增益分贝。 .. note:: 若您想追踪颜色,则需关闭白平衡。 .. function:: sensor.get_rgb_gain_db() 返回当前摄像机红色,绿色和蓝色增益值以分贝((浮点型,浮点型,浮点型))表示的元组。 .. function:: sensor.set_hmirror(enable) 打开(True)或关闭(False)水平镜像模式。默认关闭。 .. function:: sensor.get_hmirror() 如果启用了水平镜像模式,则返回。 .. function:: sensor.set_vflip(enable) 打开(True)或关闭(False)垂直翻转模式。默认关闭。 .. function:: sensor.get_vflip() 如果启用了垂直翻转模式,则返回。 .. function:: sensor.set_transpose(enable) 转置模式开启(True)或关闭(False)。默认为关闭。 * vflip=False, hmirror=False, transpose=False -> 0 degree rotation * vflip=True, hmirror=False, transpose=True -> 90 degree rotation * vflip=True, hmirror=True, transpose=False -> 180 degree rotation * vflip=False, hmirror=True, transpose=True -> 270 degree rotation .. function:: sensor.get_transpose() 返回转置模式是否启用。 .. function:: sensor.set_auto_rotation(enable) 打开自动旋转模式(True)或关闭(False)。默认为关闭。 .. note:: 此功能仅在OpenMV Cam安装了 `imu` 并自动启用时有效。 .. function:: sensor.get_auto_rotation() 如果自动旋转模式被启用,返回。 .. note:: 此功能仅在OpenMV Cam安装了 `imu` ”并自动启用时有效。 .. function:: sensor.set_framebuffers(count) 设置用于接收图像数据的帧缓冲区数。默认情况下,你的OpenMV Cam将自动尝试分配它可能分配的最大帧缓冲区数, 在分配时不使用超过 1/2 的可用帧缓冲 RAM,以确保最佳性能。 每当您调用 `sensor.set_pixformat()` , `sensor.set_framesize()` , 和 `sensor.set_windowing()` 时, 都会自动重新分配帧缓冲区。 `sensor.snapshot()` 将在后台自动处理切换活动帧缓冲区。 从您的代码的角度来看,即使系统上可能有 1 个以上的帧缓冲区和另一个在后台接收数据的帧缓冲区,也只有 1 个活动的帧缓冲区。 如果 count 为: 1 - 单帧缓冲区模式 (你也可以传递 `sensor.SINGLE_BUFFER` ) 在单帧缓冲区模式下,您的OpenMV Cam将分配一个帧缓冲区用于接收图像。 当您调用 `sensor.snapshot()` 时,该帧缓冲区将用于接收图像,并且相机驱动程序将继续运行。 如果您在接收到下一帧的第一行之前再次调用 `sensor.snapshot()` ,您的代码将以相机的帧速度执行。否则,图像将被丢弃。 2 - 双帧缓冲区模式 (你也可以传递 `sensor.DOUBLE_BUFFER` ) 在双帧缓冲区模式下,您的OpenMV Cam将为接收图像分配两个缓冲区。 当您调用 `sensor.snapshot()` 时,将使用一个帧缓冲区来接收图像,并且相机驱动程序将继续运行。当 接收到下一帧时,它将储存在另一个帧缓冲区中。 在出现后,您在接收到下一帧的第一行之前再次调用 `sensor.snapshot()` ,您的代码将以相机的帧速率执行。 否则,图像将被丢弃。 3 - 三帧缓冲区 (你也可以传递 `sensor.TRIPLE_BUFFER` ) 在三帧缓冲区模式下,您的 OpenMV Cam 将为接收图像分配三个缓冲区。 在这种模式下,总是有一个帧缓冲区将接收到的图像存储到后台,从而获得最高的性能和最低的读取最新接收帧的延迟。在这种模式下不会丢帧。 `sensor.snapshot()` 读取的下一帧是传感器驱动程序最后捕获的帧(例如,如果您的读取速度比相机帧速率慢,则可能的可用帧中的旧帧将被跳过)。 关于上面的重新分配,首先尝试三重缓冲,然后是双缓冲,如果这两者都无法容纳可用帧缓冲 RAM 的 1/2,则使用单缓冲模式。 您可以传递 4 或更大的值来将传感器驱动程序置于视频 FIFO 模式,其中接收的图像存储在具有 ``count`` 缓冲区的帧缓冲区 FIFO 中。 这对于将视频录制到 SD 卡非常有用,当 SD 卡执行诸如预擦除块以写入数据之类的日常任务时,它可能会随机阻止您的代码写入数据。 .. note:: 在丢帧(没有缓冲区可用于接收下一帧)时,除活动帧缓冲区外,所有帧缓冲区都会自动清除。 这样做是为了确保 `sensor.snapshot()` 返回当前帧而不是很久以前的帧。 有趣的事实,您可以在带有 SDRAM 的 OpenMV Cam 上传递 100 左右的值以获得巨大的视频先进先出fifo。 如果您随后调用比相机帧速率慢的快照(通过添加`pyb.delay()`),您将在 OpenMV IDE 中获得慢动作效果。 但是,您还将看到上述策略效果,即在丢帧时重置帧缓冲区以确保帧不会太旧。 如果您想录制慢动作视频,只需将视频正常录制到 SD 卡,然后在比录制速度慢的台式机上播放视频。 .. function:: sensor.get_framebuffers() 返回当前分配的帧缓冲区数。 .. function:: sensor.set_lens_correction(enable, radi, coef) ``enable`` True为启用,False为禁用(布尔值)。 ``radi`` 像素的整数半径调整(int)。 ``coef`` 功率校正(int)。 .. function:: sensor.set_vsync_callback(cb) 注册回调 ``cb`` 以在相机模块生成新帧时(但在接收到帧之前)执行(在中断上下文中)。 ``cb`` 接受一个参数,并在更改后传递 vsync 引脚的当前状态。 .. function:: sensor.set_frame_callback(cb) 注册回调 ``cb`` 以在相机模块生成新帧并且该帧准备好通过 `sensor.snapshot()` 读取时执行(在中断上下文中)。 ``cb`` 没有参数。 使用它来获取中断以安排稍后使用 `micropython.schedule()` 读取帧。 .. function:: sensor.get_frame_available() 如果一个帧可以通过调用 `sensor.snapshot()` 读取,则返回 True。 .. function:: sensor.ioctl(...) 执行sensor特定的方法: * `sensor.IOCTL_SET_READOUT_WINDOW` - 传递此枚举后跟一个矩形元组 (x, y, w, h) 或大小元组 (w, h)。 * 此 IOCTL 允许您控制相机传感器的读出窗口,从而以视场为代价显着提高帧速率。 * 如果您传递一个 rect 元组 (x, y, w, h),则读出窗口将位于该 rect 元组上。 rect 元组的 x/y 位置将被调整,以便尺寸 w/h 适合。 此外,w/h 的大小将被调整为不小于 ``framesize``。 * 如果您传递一个大小元组 (w, h),则在给定 w/h 的情况下,读数窗口将居中。 此外,w/h 的大小将被调整为不小于 ``framesize``。 * 此 IOCTL 对提高 OV2640/OV5640 等更高分辨率相机的帧速率非常有帮助。 * `sensor.IOCTL_GET_READOUT_WINDOW` - 将此枚举传递给 `sensor.ioctl` 以返回当前的读出窗口矩形元组(x, y, w, h)。默认情况下这是(0, 0, maximum_camera_sensor_pixel_width, maximum_camera_sensor_pixel_height)。 * `sensor.IOCTL_SET_TRIGGERED_MODE` - 传递此枚举后跟 True 或 False 设置 MT9V034 传感器的触发模式。 * `sensor.IOCTL_GET_TRIGGERED_MODE` - 将此枚举传递给 `sensor.ioctl` 以返回当前触发模式状态。 * `sensor.IOCTL_TRIGGER_AUTO_FOCUS` - 将此枚举传递给 `sensor.ioctl` 以触发对 OV5640 FPC 摄像头模块的自动对焦。 * `sensor.IOCTL_PAUSE_AUTO_FOCUS` - 将此枚举传递给 `sensor.ioctl` 以暂停 OV5640 FPC 相机模块上的自动对焦(触发后)。 * `sensor.IOCTL_RESET_AUTO_FOCUS` - 将此枚举传递给 `sensor.ioctl` 以重置 OV5640 FPC 相机模块上的自动对焦(触发后)。 * `sensor.IOCTL_WAIT_ON_AUTO_FOCUS` - 将此枚举传递给 `sensor.ioctl` 以等待自动对焦(触发后)在 OV5640 FPC 相机模块上完成。 您可以以毫秒为单位传递超时的第二个参数。 默认值为 5000 毫秒。 * `sensor.IOCTL_LEPTON_GET_WIDTH` - 传递此枚举可获取FLIR Lepton图像宽度(以像素为单位)。 * `sensor.IOCTL_LEPTON_GET_HEIGHT` - 传递此枚举可获取FLIR Lepton图像高度(以像素为单位)。 * `sensor.IOCTL_LEPTON_GET_RADIOMETRY` - 传递此枚举可获取FLIR Lepton类型(辐射测量或非辐射测量)。 * `sensor.IOCTL_LEPTON_GET_REFRESH` - 传递此枚举可获取以赫兹为单位的FLIR Lepton刷新率。 * `sensor.IOCTL_LEPTON_GET_RESOLUTION` - 传递此枚举可获取FLIR Lepton ADC分辨率(以位为单位)。 * `sensor.IOCTL_LEPTON_RUN_COMMAND` - 传递此枚举以执行FLIR Lepton SDK命令。您需要在枚举之后传递一个附加的16位值作为要执行的命令。 * `sensor.IOCTL_LEPTON_SET_ATTRIBUTE` - 传递此枚举可设置FLIR Lepton SDK属性。 * 第一个参数是要设置的16位属性ID(设置FLIR Lepton SDK)。 * 第二个参数是要写入的MicroPython字节数组(应为16位的倍数)。按照FLIR Lepton SDK使用 `struct` 创建字节数组。 * `sensor.IOCTL_LEPTON_GET_ATTRIBUTE` - 传递此枚举可获取FLIR Lepton SDK属性。 * 第一个参数是要设置的16位属性ID(设置FLIR Lepton SDK)。 * 返回属性的MicroPython字节数组。使用 `struct` 反序列化FLIR Lepton SDK之后的字节数组。 * `sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE` - 传递此枚举可获取FLIR Lepton FPA温度,单位是摄氏度。 * `sensor.IOCTL_LEPTON_GET_AUX_TEMPERATURE` - 传递此枚举可获取FLIR Lepton AUX温度,单位是摄氏度。 * `sensor.IOCTL_LEPTON_SET_MEASUREMENT_MODE` - 传递此参数后,再输入True或False,以关闭FLIR轻子上的自动增益控制,并强制其输出图像,其中每个像素值代表精确的摄氏温度值。 * `sensor.IOCTL_LEPTON_GET_MEASUREMENT_MODE` - 如果启用或禁用测量模式,则传递此参数。 * `sensor.IOCTL_LEPTON_SET_MEASUREMENT_RANGE` - 启用测量模式时,通过此选项可以为映射操作设置摄氏温度范围。然后,将FLIR Lepton返回的温度图像钳制在这些最小值和最大值之间,然后缩放为0到255之间的值。要将像素值映射回温度(在灰度图像上),请执行以下操作:((pixel * (max_temp_in_celsius - min_temp_in_celsius)) / 255.0) + min_temp_in_celsius。 * 第一个参数应该是摄氏最低温度。 * 第二个参数应该是摄氏最高温度。如果参数反转,库将自动为您交换它们。 * `sensor.IOCTL_LEPTON_GET_MEASUREMENT_RANGE` - 通过这个返回排序的(min,max)2值温度范围元组。如果还没有设置,默认值是-17.7778C到37.7778C (0F到100F)。 * `sensor.IOCTL_HIMAX_MD_ENABLE` - 传递此枚举后跟 ``True``/``False`` 以启用/禁用 HM01B0 上的运动检测。 您还应该启用连接到 HM01B0 运动检测线的 I/O 引脚(Arduino Portenta 上的 PC15)以接收中断。 * `sensor.IOCTL_HIMAX_MD_CLEAR` - 传递此枚举以清除 HM01B0 上的运动检测中断。 * `sensor.IOCTL_HIMAX_MD_WINDOW` - 传递此枚举后跟 (x1, y1, x2, y2) 以在 HM01B0 上设置运动检测窗口。 * `sensor.IOCTL_HIMAX_MD_THRESHOLD` - 传递此枚举后跟阈值 (0-255) 以设置 HM01B0 上的运动检测阈值。 * `sensor.IOCTL_HIMAX_OSC_ENABLE` - 传递此枚举后跟 ``True``/``False`` 以启用/禁用振荡器 HM01B0 以节省电源。 .. function:: sensor.set_color_palette(palette) 设置调色板以将FLIR Lepton灰度转换为RGB565。 .. function:: sensor.get_color_palette() 返回当前调色板设置。默认为 `sensor.PALETTE_RAINBOW`。 .. function:: sensor.__write_reg(address, value) 在 ``address(int)`` 向相机寄存器中写入 ``value (int)`` 。 .. note:: 请参阅摄像头数据表以获得注册信息。 .. function:: sensor.__read_reg(address) 在 ``address`` (int)上读取摄像头数据表。 .. note:: 请参阅摄像头数据表以获得注册信息。 常量 --------- .. data:: sensor.BINARY 二进制(位图)像素格式。每个像素是1位。 这种格式对于掩码存储非常有用。可以与 `image.Image()` 和 `sensor.alloc_extra_fb()` 一起使用。 .. data:: sensor.GRAYSCALE GRAYSCALE像素模式(Y from YUV422)。每像素为8位、1字节。 我们所有的计算机视觉算法在灰度图像上比在RGB565图像上运行更快。 .. data:: sensor.RGB565 RGB565像素模式。每像素为16位、2字节。5位用于红色,6位用于绿色,5位用于蓝色。 我们所有的计算机视觉算法在RGB565图像上比在灰度图像上运行更慢。 .. data:: sensor.BAYER RAW BAYER图像像素格式。如果你试图使帧大小太大,以适应帧缓冲区,你的OpenMV摄像头将设置像素格式为BAYER, 使你可以捕获图像,但是无法使用任何图像处理方法。 .. data:: sensor.JPEG JPEG模式。摄像机模块输出压缩的jpeg图像。 使用 `sensor.set_quality()` 来控制jpeg的质量。 仅适用于OV2640/OV5640相机。 .. data:: sensor.OV2640 `sensor.get_id()` 返回此以适用于OV2640相机。 .. data:: sensor.OV5640 `sensor.get_id()` 为OV5640相机返回这个值。 .. data:: sensor.OV7690 `sensor.get_id()` 为OV7690相机返回这个值。 .. data:: sensor.OV7725 `sensor.get_id()` 返回此以适用于OV7725相机。 .. data:: sensor.OV9650 `sensor.get_id()` 为OV9650相机返回这个值。 .. data:: sensor.MT9M114 `sensor.get_id()` 返回此 适用于MT9M114相机。 .. data:: sensor.MT9V034 `sensor.get_id()` 返回此 适用于MT9V034相机。 .. data:: sensor.LEPTON `sensor.get_id()` 返回此 适用于LEPTON1/2/3相机。 .. data:: sensor.HM01B0 `sensor.get_id()` 返回此 适用于HM01B0相机 .. data:: sensor.GC2145 `sensor.get_id()`返回此 适用于GC2145相机 .. data:: sensor.QQCIF 88x72 分辨率的相机传感器。 .. data:: sensor.QCIF 176x144 分辨率的相机传感器。 .. data:: sensor.CIF 352x288 分辨率的相机传感器。 .. data:: sensor.QQSIF 88x60 分辨率的相机传感器。 .. data:: sensor.QSIF 176x120 分辨率的相机传感器。 .. data:: sensor.SIF 352x240 分辨率的相机传感器。 .. data:: sensor.QQQQVGA 40x30 分辨率的相机传感器。 .. data:: sensor.QQQVGA 80x60 分辨率的相机传感器。 .. data:: sensor.QQVGA 160x120 分辨率的相机传感器。 .. data:: sensor.QVGA 320x240 分辨率的相机传感器。 .. data:: sensor.VGA 640x480 分辨率的相机传感器。 只适用于OV2640相机或OpenMV Cam M7。 .. data:: sensor.HQQQVGA 60x40 分辨率的相机传感器。 .. data:: sensor.HQQVGA 120x80 分辨率的相机传感器。 .. data:: sensor.HQVGA 240x160 分辨率的相机传感器。 .. data:: sensor.B64x32 64x32 分辨率的相机传感器 (与 `image.find_displacement` 结合使用)。 用于 `image.find_displacement()` 和任何其他基于FFT的算法。 .. data:: sensor.B64x64 64x64 分辨率的相机传感器。 用于 ``image.find_displacement()`` 和任何其他基于FFT的算法。 .. data:: sensor.B128x64 128X64 分辨率的相机传感器。 用于 `image.find_displacement()` 和任何其他基于FFT的算法。 .. data:: sensor.B128x128 128X128 分辨率的相机传感器。 用于 `image.find_displacement()` 和任何其他基于FFT的算法。 .. data:: sensor.B320X320 HM01B0 相机传感器的分辨率为 320x320。 .. data:: sensor.LCD 128x160 分辨率的相机传感器(用于lcd扩展板)。 .. data:: sensor.QQVGA2 128x160 分辨率的相机传感器(用于lcd扩展板)。 .. data:: sensor.WVGA 720x480 分辨率的相机传感器。 只适用于MT9V034相机。 .. data:: sensor.WVGA2 752x480 分辨率的相机传感器。 只适用于MT9V034相机。 .. data:: sensor.SVGA 800x600 分辨率的相机传感器。 只适用于OV2640/OV5640相机。 .. data:: sensor.SXGA 1280x1024 分辨率的相机传感器。 只适用于OV2640/OV5640相机。 .. data:: sensor.UXGA 1600x1200 分辨率的相机传感器。 只适用于OV2640/OV5640相机。 .. data:: sensor.HD 相机传感器分辨率为1280x720。仅适用于OV2640/OV5640相机。 .. data:: sensor.FHD 相机传感器分辨率为1920x1080。只适用于OV5640相机。 .. data:: sensor.QHD 相机传感器分辨率为2560x1440。只适用于OV5640相机。 .. data:: sensor.QXGA 相机传感器分辨率为2048x1536。只适用于OV5640相机。 .. data:: sensor.WQXGA 相机传感器分辨率为2560x1600。只适用于OV5640相机。 .. data:: sensor.WQXGA2 相机传感器分辨率为2592x1944。只适用于OV5640相机。 . data:: sensor.PALETTE_RAINBOW 使用平滑色轮的热图像的默认OpenMV Cam调色板。 .. data:: sensor.PALETTE_IRONBOW 使用非常非线性的调色板,使图像看起来像FLIR Lepton热图像。 .. data:: sensor.IOCTL_SET_READOUT_WINDOW 用于设置 OV5640 的读数窗口。 .. data:: sensor.IOCTL_GET_READOUT_WINDOW 让您获得 OV5640 的读数窗口。 .. data:: sensor.IOCTL_SET_TRIGGERED_MODE 设置MT9V034的触发模式。 .. data:: sensor.IOCTL_GET_TRIGGERED_MODE 获得MT9V034的触发模式。 .. data:: sensor.IOCTL_TRIGGER_AUTO_FOCUS 用于触发 OV5640 FPC 摄像头模块的自动对焦。 .. data:: sensor.IOCTL_PAUSE_AUTO_FOCUS 用于暂停 OV5640 FPC 摄像头模块的自动对焦(运行时)。 .. data:: sensor.IOCTL_RESET_AUTO_FOCUS 用于将 OV5640 FPC 摄像头模块的自动对焦重置为默认值。 .. data:: sensor.IOCTL_WAIT_ON_AUTO_FOCUS 用于OV5640 FPC摄像头模组触发后等待自动对焦完成。 .. data:: sensor.IOCTL_LEPTON_GET_WIDTH 获得FLIR Lepton图像分辨率宽度(以像素为单位)。 .. data:: sensor.IOCTL_LEPTON_GET_HEIGHT 获得FLIR Lepton图像分辨率高度(以像素为单位)。 .. data:: sensor.IOCTL_LEPTON_GET_RADIOMETRY 获到FLIR Lepton的类型(辐射或非辐射)。 .. data:: sensor.IOCTL_LEPTON_GET_REFRESH 获得以赫兹为单位的FLIR Lepton刷新率。 .. data:: sensor.IOCTL_LEPTON_GET_RESOLUTION 以位为单位获得FLIR Lepton ADC分辨率。 .. data:: sensor.IOCTL_LEPTON_RUN_COMMAND 给定FLIR Lepton SDK,执行一个16位的命令。 .. data:: sensor.IOCTL_LEPTON_SET_ATTRIBUTE 给定FLIR Lepton SDK,设置FLIR Lepton属性。 .. data:: sensor.IOCTL_LEPTON_GET_ATTRIBUTE 给定FLIR Lepton SDK,获取FLIR Lepton属性。 .. data:: sensor.IOCTL_LEPTON_GET_FPA_TEMPERATURE 获取以摄氏度为单位的FLIR Lepton FPA温度。 .. data:: sensor.IOCTL_LEPTON_GET_AUX_TEMPERATURE 获取以摄氏度为单位的FLIR Lepton AUX温度。 .. data:: sensor.IOCTL_LEPTON_SET_MEASUREMENT_MODE 使您可以将FLIR Lepton驱动器设置为可以获取每个像素有效温度值的模式。参见 `sensor.ioctl()` 了解更多信息。 .. data:: sensor.IOCTL_LEPTON_GET_MEASUREMENT_MODE 返回是否启用了FLIR Lepton传感器的测量模式。有关更多信息,请参见`sensor.ioctl()` 。 .. data:: sensor.IOCTL_LEPTON_SET_MEASUREMENT_RANGE 在测量模式下,可以设置要将图像中的像素映射到的温度范围。有关更多信息,请参见 `sensor.ioctl()` 。 .. data:: sensor.IOCTL_LEPTON_GET_MEASUREMENT_RANGE 让您获得用于测量模式的温度范围。有关更多信息,请参见 `sensor.ioctl()` 。 .. data:: sensor.IOCTL_HIMAX_MD_ENABLE 让您控制 HM01B0 上的运动检测中断。 有关更多信息,请参阅 `sensor.ioctl()`。 .. data:: sensor.IOCTL_HIMAX_MD_CLEAR 让您控制 HM01B0 上的运动检测中断。 有关更多信息,请参阅 `sensor.ioctl()`。 .. data:: sensor.IOCTL_HIMAX_MD_WINDOW 让您控制 HM01B0 上的运动检测中断。 有关更多信息,请参阅 `sensor.ioctl()`。 .. data:: sensor.IOCTL_HIMAX_MD_THRESHOLD 让您控制 HM01B0 上的运动检测中断。 有关更多信息,请参阅 `sensor.ioctl()`。 .. data:: sensor.IOCTL_HIMAX_OSC_ENABLE 让您控制 HM01B0 上的内部振荡器。 有关更多信息,请参阅 `sensor.ioctl()`。 .. data:: sensor.SINGLE_BUFFER 传递给 `sensor.set_framebuffers()` 以设置单缓冲区模式(1 个缓冲区)。 .. data:: sensor.DOUBLE_BUFFER 传递给 `sensor.set_framebuffers()` 以设置单缓冲区模式(2个缓冲区)。 .. data:: sensor.TRIPLE_BUFFER 传递给 `sensor.set_framebuffers()` 以设置单缓冲区模式(3 个缓冲区)。 .. data:: sensor.VIDEO_FIFO 传递给 `sensor.set_framebuffers()` 以设置单缓冲区模式(4 个缓冲区)。