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.
shutdown
(enable)¶ 使相机进入比睡眠状态低的功耗模式(但相机必须在被唤醒时重置)。
-
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毫秒的帧。若
n
和time
皆未指定,该方法跳过300毫秒的帧。若二者皆指定,该方法会跳过
n
数量的帧,但将在time
毫秒后超时。
-
sensor.
width
()¶ 返回传感器的分辨率宽度。
-
sensor.
height
()¶ 返回传感器的分辨率高度。
-
sensor.
get_fb
()¶ (获取帧缓冲区)返回由先前调用的
sensor.snapshot()
所返回的图像对象。 若此前未调用过sensor.snapshot()
,则返回None
。
-
sensor.
get_id
()¶ 返回相机模块ID。
sensor.OV9650
: 第一代OpenMV Cam的感光元件 - 不再发布.sensor.OV2640
: 第二代OpenMV Cam的感光元件 - 不再发布.sensor.OV7725
: 卷帘快门.sensor.MT9V034
: 全局快门.sensor.LEPTON
: Lepton1/2/3 感光元件.
-
sensor.
alloc_extra_fb
(width, height, pixformat)¶ 为帧缓冲区堆栈中的图像存储分配另一个帧缓冲区, 并返回一个
width
,height
,pixformat
图像对象。只要有可用内存分配任意数量的额外帧缓冲区,您可以随意调用此函数。
注解
创建辅助图像通常需要在具有有限数量的RAM的堆上创建它们。 但是,也会被分割,使得难以抓取大型连续存储器阵列来存储图像。使用此方法,您可以分配 非常大的存储器阵列, 通过从我们用于计算机视觉算法的帧缓冲区堆栈存储器中获取空间而立即获得图像。 也就是说, 这也意味着如果您尝试执行更多内存密集型机器视觉算法(如
image.find_apriltags
),则会更容易耗尽内存。
-
sensor.
dealloc_extra_fb
()¶ 取消分配先前分配的最后一个帧缓冲区。额外的帧缓冲区以结构形式存储在堆栈中。
注解
您的OpenMV有两个内存区域。 首先,你有你的经典 .data/.bss/heap/stack存储区。 .data/.bss/heap堆区域由固件修复。堆栈然后增长下来,直到它碰到堆。 接下来,帧缓冲区被存储在辅助存储区域中。内存与底部的主要帧缓冲区和顶部的帧缓冲区堆栈有关。 当调用snapshot()时,它会从底部填充帧缓冲区。帧缓冲区堆栈可以使用剩下的任何东西。这种内存分配方法对微控制器上的计算机视觉非常有效。
-
sensor.
set_pixformat
(pixformat)¶ 设置相机模块的像素模式。
sensor.GRAYSCALE
: 8-bits per pixel.sensor.RGB565
: 16-bits per pixel.sensor.BAYER
: 8-bits per pixel bayer pattern.
-
sensor.
set_framesize
(framesize)¶ 设置相机模块的帧大小。
sensor.QQCIF
: 88x72sensor.QCIF
: 176x144sensor.CIF
: 352x288sensor.QQSIF
: 88x60sensor.QSIF
: 176x120sensor.SIF
: 352x240sensor.QQQQVGA
: 40x30sensor.QQQVGA
: 80x60sensor.QQVGA
: 160x120sensor.QVGA
: 320x240sensor.VGA
: 640x480sensor.HQQQVGA
: 80x40sensor.HQQVGA
: 160x80sensor.HQVGA
: 240x160sensor.B64X32
: 64x32 (for use withimage.find_displacement()
)sensor.B64X64
: 64x64 (for use withimage.find_displacement()
)sensor.B128X64
: 128x64 (for use withimage.find_displacement()
)sensor.B128X128
: 128x128 (for use withimage.find_displacement()
)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 in JPEG mode for the OV2640 sensor)sensor.SXGA
: 1280x1024 (only in JPEG mode for the OV2640 sensor)sensor.UXGA
: 1600x1200 (only in JPEG mode for the OV2640 sensor)
-
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.
ioctl
(...)¶ 执行sensor特定的方法:
sensor.IOCTL_SET_TRIGGERED_MODE
- 传递此枚举,然后为MT9V034传感器设置True或False设置触发模式。sensor.IOCTL_GET_TRIGGERED_MODE
- 将此枚举传递给sensor.ioctl
以返回当前的触发模式状态。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.
set_color_palette
(palette)¶ 设置调色板以将FLIR Lepton灰度转换为RGB565。
-
sensor.
get_color_palette
()¶ 返回当前调色板设置。默认为
sensor.PALETTE_RAINBOW
。
-
sensor.
__write_reg
(address, value)¶ 在
address(int)
向相机寄存器中写入value (int)
。注解
请参阅摄像头数据表以获得注册信息。
-
sensor.
__read_reg
(address)¶ 在
address
(int)上读取摄像头数据表。注解
请参阅摄像头数据表以获得注册信息。
常量¶
-
sensor.
BINARY
¶ 二进制(位图)像素格式。每个像素是1位。
这种格式对于掩码存储非常有用。可以与
image.Image()
和sensor.alloc_extra_fb()
一起使用。
-
sensor.
GRAYSCALE
¶ GRAYSCALE像素模式(Y from YUV422)。每像素为8位、1字节。
我们所有的计算机视觉算法在灰度图像上比在RGB565图像上运行更快。
-
sensor.
RGB565
¶ RGB565像素模式。每像素为16位、2字节。5位用于红色,6位用于绿色,5位用于蓝色。
我们所有的计算机视觉算法在RGB565图像上比在灰度图像上运行更慢。
-
sensor.
BAYER
¶ RAW BAYER图像像素格式。如果你试图使帧大小太大,以适应帧缓冲区,你的OpenMV摄像头将设置像素格式为BAYER, 使你可以捕获图像,但是无法使用任何图像处理方法。
-
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相机。
. data:: sensor.PALETTE_RAINBOW
使用平滑色轮的热图像的默认OpenMV Cam调色板。
-
sensor.
PALETTE_IRONBOW
¶ 使用非常非线性的调色板,使图像看起来像FLIR Lepton热图像。
-
sensor.
IOCTL_SET_TRIGGERED_MODE
¶ 设置MT9V034的触发模式。
-
sensor.
IOCTL_GET_TRIGGERED_MODE
¶ 获得MT9V034的触发模式。
-
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,设置FLIR Lepton属性。
-
sensor.
IOCTL_LEPTON_GET_ATTRIBUTE
¶ 给定FLIR Lepton SDK,获取FLIR Lepton属性。
-
sensor.
IOCTL_LEPTON_GET_FPA_TEMPERATURE
¶ 获取以摄氏度为单位的FLIR Lepton FPA温度。
-
sensor.
IOCTL_LEPTON_GET_AUX_TEMPERATURE
¶ 获取以摄氏度为单位的FLIR Lepton AUX温度。
-
sensor.
IOCTL_LEPTON_SET_MEASUREMENT_MODE
¶ 使您可以将FLIR Lepton驱动器设置为可以获取每个像素有效温度值的模式。参见
sensor.ioctl()
了解更多信息。
-
sensor.
IOCTL_LEPTON_GET_MEASUREMENT_MODE
¶ 返回是否启用了FLIR Lepton传感器的测量模式。有关更多信息,请参见`sensor.ioctl()` 。
-
sensor.
IOCTL_LEPTON_SET_MEASUREMENT_RANGE
¶ 在测量模式下,可以设置要将图像中的像素映射到的温度范围。有关更多信息,请参见
sensor.ioctl()
。
-
sensor.
IOCTL_LEPTON_GET_MEASUREMENT_RANGE
¶ 让您获得用于测量模式的温度范围。有关更多信息,请参见
sensor.ioctl()
。