fir — 热成像模块¶
fir 模块用于控制热成像扩展板。
使用示例
import sensor, fir
# Setup camera.
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames()
fir.init()
# Show image.
def loop():
    img = sensor.snapshot()
    ta, ir, to_min, to_max = fir.read_ir()
    fir.draw_ir(image, ir)
    print("====================")
    print("Ambient temperature: %0.2f" % ta)
    print("Min temperature seen: %0.2f" % to_min)
    print("Max temperature seen: %0.2f" % to_max)
函数¶
- fir.init([type=-1[, refresh[, resolution]]])¶
 使用I/O引脚P4和P5将附加的热成像扩展板初始化。(以及用于
fir.FIR_LEPTON的 P0、P1、P2、P3)type表明热成像扩展板的类型(留待将来使用):fir.FIR_NONE: 0 pixels.fir.FIR_SHIELD: 16x4 pixels.fir.FIR_MLX90621: 16x4 pixels.fir.FIR_MLX90640: 32x24 pixels.fir.FIR_MLX90641: 16x12 pixels.fir.FIR_AMG8833: 8x8 pixels.fir.FIR_LEPTON: 80x60 pixels (FLIR Lepton 1.x/2.x) or 160x120 pixels (FLIR Lepton 3.x)
默认类型为
-1,这将导致fir.init()根据 I2C 地址自动扫描和初始化连接的热传感器。 请注意,fir.FIR_MLX90640和fir.FIR_MLX90641具有相同的I2C 地址,因此您必须传递fir.FIR_MLX90641来键入以专门对其进行初始化。fir.FIR_LEPTONon the znzpi Cam Pure Thermal this uses internal I/O pins and does not use P0-P5.refresh是以 Hz 为单位的热电堆传感器 2 次方刷新率:fir.FIR_NONE: N/Afir.FIR_SHIELD: 默认为 64 Hz。 可以是 1 Hz、2 Hz、4 Hz、8 Hz、16 Hz、32 Hz、64 Hz、128 Hz、256 Hz 或 512 Hz。 请注意,较高的刷新率会降低准确度,反之亦然。fir.FIR_MLX90621: 默认为 64 Hz。 可以是 1 Hz、2 Hz、4 Hz、8 Hz、16 Hz、32 Hz、64 Hz、128 Hz、256 Hz 或 512 Hz。 请注意,较高的刷新率会降低准确度,反之亦然。fir.FIR_MLX90640: 默认为 32 Hz。 可以是 1 Hz、2 Hz、4 Hz、8 Hz、16 Hz、32 Hz 或 64 Hz。 请注意,较高的刷新率会降低准确度,反之亦然。fir.FIR_MLX90641: 默认为 32 Hz。 可以是 1 Hz、2 Hz、4 Hz、8 Hz、16 Hz、32 Hz 或 64 Hz。 请注意,较高的刷新率会降低准确度,反之亦然。fir.FIR_AMG8833: 10 Hzfir.FIR_LEPTON: 9 Hz (really 8.7 Hz).
resolution是热成像传感器的测量分辨率。fir.FIR_NONE: N/Afir.FIR_SHIELD: 默认为 18 位。 可以是 15 位、16 位、17 位或 18 位。 请注意,更高的分辨率会降低最大温度范围,反之亦然。fir.FIR_MLX90621: 默认为 18 位。 可以是 15 位、16 位、17 位或 18 位。 请注意,更高的分辨率会降低最大温度范围,反之亦然。fir.FIR_MLX90640: 默认为 19 位。 可以是 16 位、17 位、18 位或 19 位。 请注意,更高的分辨率会降低最大温度范围,反之亦然。fir.FIR_MLX90641: 默认为 19 位。 可以是 16 位、17 位、18 位或 19 位。 请注意,更高的分辨率会降低最大温度范围,反之亦然。fir.FIR_AMG8833: 12-bits.fir.FIR_LEPTON: 14-bits.
For the
fir.FIR_SHIELDandfir.FIR_MLX90621:15 位 -> 最高 ~950C。
16 位 -> 最高约 750C。
17 位 -> 最大 ~600C。
18 位 -> 最大 ~450C。
For the
fir.FIR_MLX90640andfir.FIR_MLX90641:16 位 -> 最高约 750C。
17 位 -> 最大 ~600C。
18 位 -> 最大 ~450C。
19 位 -> 最高 ~300C。
For the
fir.FIR_AMG8833:最高 ~80C。
For the
fir.FIR_LEPTON:最高约 140C(在低增益模式下最高可达 400C-450C)。
备注
对于
fir.FIR_LEPTON模式,该驱动程序实现三重缓冲以接收 FLIR Lepton 图像。 FLIR Lepton 1.x/2.x 使用 28.125 KB RAM,FLIR Lepton 3.x 使用 112.5 KB RAM。 三重缓冲确保使用fir.read_ir()和fir.snapshot()永远不会阻塞。对于所有其他传感器,访问 I2C 总线以读取图像。
- fir.deinit()¶
 取消初始化热传感器以释放资源。
- fir.width()¶
 返回使用中的热传感器的宽度(水平分辨率):
fir.FIR_NONE: 0 pixels.fir.FIR_SHIELD: 16 pixels.fir.FIR_MLX90621: 16 pixels.fir.FIR_MLX90640: 32 pixels.fir.FIR_MLX90641: 16 pixels.fir.FIR_AMG8833: 8 pixels.fir.FIR_LEPTON: 80 pixels (FLIR Lepton 1.x/2.x) or 160 pixels (FLIR Lepton 3.x).
- fir.height()¶
 返回使用中的热成像扩展板的高度(垂直分辨率):
fir.FIR_NONE: 0 pixels.fir.FIR_SHIELD: 4 pixels.fir.FIR_MLX90621: 4 pixels.fir.FIR_MLX90640: 24 pixels.fir.FIR_MLX90641: 12 pixels.fir.FIR_AMG8833: 8 pixels.fir.FIR_LEPTON: 60 pixels (FLIR Lepton 1.x/2.x) or 120 pixels (FLIR Lepton 3.x).
- fir.type()¶
 返回正在使用的热成像扩展板的类型:
- fir.refresh()¶
 返回在
fir.init()调用期间设置的当前刷新率。
- fir.resolution()¶
 返回在
fir.init()调用期间设置的当前分辨率。
- fir.radiometric()¶
 如果热传感器报告准确的温度读数(True或False),则返回。 如果为 False,这意味着热传感器根据其环境温度报告相对温度读数,这可能不太准确。
- fir.register_vsync_cb(cb)¶
 仅适用于 znzpi AI相机 上的
fir.FIR_LEPTON模式。注册回调
cb以在 FLIR Lepton 生成新帧时(但在接收到帧之前)执行(在中断上下文中)。这通常以 9 Hz 触发。
cb没有参数。
- fir.register_frame_cb(cb)¶
 仅适用于 znzpi AI相机 上的
fir.FIR_LEPTON模式。注册回调
cb以在 FLIR Lepton 生成新帧并且该帧准备好通过fir.read_ir()或fir.snapshot()读取时执行(在中断上下文中)。这通常以 9 Hz 触发。
cb没有参数。使用它来获取中断以安排稍后使用
micropython.schedule()读取帧。
- fir.get_frame_available()¶
 如果通过调用
fir.read_ir()或fir.snapshot()可以读取帧,则返回 True。
- fir.trigger_ffc([timeout=-1])¶
 仅适用于
fir.FIR_LEPTON模式。在 FLIR Lepton 上触发平场校正过程,校准热图像。这个过程随着传感器自动发生。但是,您可以调用此函数来强制执行该过程。
timeout如果不是 -1 那么等待 FFC 完成的毫秒数。
- fir.read_ta()¶
 返回环境温度(即传感器温度)。
示例
ta = fir.read_ta()
返回值是表示温度(单位:摄氏度)的浮点值。
- fir.read_ir([hmirror=False[, vflip=False[, transpose=False[, timeout=-1]]]])¶
 返回一个包含环境温度(即传感器温度)、温度列表(宽度*高度)、所见最低温度和所见最高温度的元组。
hmirror如果设置为 True 水平镜像 ir 数组。vflip如果设置为 True 垂直翻转 ir 数组。transpose如果设置为 True 会转置 ir 数组。timeout如果不是 -1 那么等待新帧的毫秒数。如果要将图像旋转 90 度的倍数,请执行以下操作:
* 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
示例
ta, ir, to_min, to_max = fir.read_ir()
返回值是表示温度(单位:摄氏度)的浮点值。
备注
ir是一个浮点值(每个 4 字节)列表(宽度*高度)。
- fir.draw_ir(image, ir[, x[, y[, x_scale=1.0[, y_scale=1.0[, roi=None[, rgb_channel=-1[, alpha=128[, color_palette=image.PALETTE_RAINBOW[, alpha_palette=-1[, hint=0[, scale=(ir_min, ir_max)]]]]]]]]]]])¶
 在
image上绘制一个ir数组,其左上角从位置 x, y 开始。您可以将 x, y 作为元组 (x, y) 单独传递,或者根本不传递。 此方法自动处理渲染传递到目标图像的正确像素格式的图像,同时还无缝处理剪辑。x_scale控制在水平方向显示图像的缩放参数(浮点数)。如果是负值则进行水平镜像。注意如果没有指定``y_scale`` 则使用x_scale来保持纵横比。y_scale控制在垂直方向显示图像的缩放参数(浮点数)。如果是负值则进行垂直翻转。注意如果没有指定``x_scale`` 则使用y_scale来保持纵横比。roi是要绘制的源图像的感兴趣区域矩形元组 (x, y, w, h)。这允许您仅提取 ROI 中的像素以在目标图像上进行缩放和绘制。rgb_channel是从 RGB565 图像(如果传递)中提取并渲染到目标图像上的 RGB 通道(0=R,G=1,B=2)。 例如,如果您传递rgb_channel=1这将提取源 RGB565 图像的绿色通道并在目标图像上以灰度方式绘制。alpha控制要混合到目标图像中的源图像的多少。值为 256 时绘制不透明的源图像,而小于 256 的值会在源图像和目标图像之间产生混合。 0 不会修改目标图像。color_palette如果不是-1可以是image.PALETTE_RAINBOW、image.PALETTE_IRONBOW, 或总共 256 像素的 RGB565 图像,用作任何来源灰度值的颜色查找表图像。如果使用,这将在rgb_channel提取之后应用。alpha_palette如果不是-1可以是总共 256 像素的灰度图像,用作alpha调色板,以像素级别调制正在绘制的源图像的 alpha 值, 允许您根据像素的灰度值精确控制像素的 alpha 值。 alpha 查找表中的 255 像素值是不透明的,任何小于 255 的像素值都会变得更透明,直到 0。 如果使用,则在rgb_channel提取之后应用。hint为一个逻辑或标志:image.AREA: 近邻插值缩小使用的面积参数image.BILINEAR: 近邻插值的线性缩放。image.BICUBIC:近邻插值的双立方缩放image.CENTER: 显示图像置中,在缩放后使用。image.HMIRROR:水平镜像图像image.VFLIP: 垂直翻转图像image.TRANSPOSE: 旋转图像(交换x/y)image.EXTRACT_RGB_CHANNEL_FIRST: 在缩放前抽取RGB通道。image.APPLY_COLOR_PALETTE_FIRST: 做法前 使用调色板。image.SCALE_ASPECT_KEEP: 缩放图像以使用显示。image.SCALE_ASPECT_EXPAND: 缩放图像以适应显示(剪切)image.SCALE_ASPECT_IGNORE: 缩放图像以适应显示(伸展)image.ROTATE_90: 图像旋转90度(即 VFLIP | TRANSPOSE)image.ROTATE_180: 图像180度旋转(即 HMIRROR | VFLIP)image.ROTATE_270: 图像旋转270度(即 HMIRROR | TRANSPOSE)
scale是一个两值元组,它控制最小和最大温度(以摄氏度为单位)以缩放ir图像。默认情况下,它等于图像ir最小值 和ir最大值。如果未指定 x/y,图像将在视野中居中。如果未指定 x_scale/y_scale 或 x_size/y_size,则
ir数组将被缩放以适合图像image。
- fir.snapshot([hmirror=False, [vflip=False, [transpose=False, [x_scale=1.0, [y_scale=1.0, [roi=None, [rgb_channel=-1, [alpha=128, [color_palette=fir.PALETTE_RAINBOW, [alpha_palette=None, [hint=0, [scale=(ir_min, ir_max), [pixformat=image.RGB565, [copy_to_fb=False, [timeout=-1]]]]]]]]]]]]]])¶
 工作方式类似于
sensor.snapshot(),并返回一个image对象,该对象为image.GRAYSCALE(灰度)或image.RGB565(彩色)。 如果copy_to_fb为False,则新图像分配在MicroPython堆上。但是,MicroPython堆是有限的,如果耗尽,可能没有空间存储新图像。 相反,将copy_to_fb设置为True,将帧缓冲区设置为新图像,使此函数像sensor.snapshot()一样工作。hmirror如果设置为 True 水平镜像新图像。vflip如果设置为 True 垂直翻转新图像。transpose如果设置为 True 会转置新图像。如果要将图像旋转 90 度的倍数,请执行以下操作:
* 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
x_scale控制在水平方向显示图像的缩放参数(浮点数)。如果是负值则进行水平镜像。注意如果没有指定``y_scale`` 则使用x_scale来保持纵横比。y_scale控制在垂直方向显示图像的缩放参数(浮点数)。如果是负值则进行垂直翻转。注意如果没有指定``x_scale`` 则使用y_scale来保持纵横比。roi是要绘制的源图像的感兴趣区域矩形元组 (x, y, w, h)。这允许您仅提取 ROI 中的像素以在目标图像上进行缩放和绘制。rgb_channel是从 RGB565 图像(如果传递)中提取并渲染到目标图像上的 RGB 通道(0=R,G=1,B=2)。 例如,如果您传递rgb_channel=1这将提取源 RGB565 图像的绿色通道并在目标图像上以灰度方式绘制。alpha控制要混合到目标图像中的源图像的多少。值为 256 时绘制不透明的源图像,而小于 256 的值会在源图像和目标图像之间产生混合。 0 不会修改目标图像。color_palette如果不是-1可以是image.PALETTE_RAINBOW、image.PALETTE_IRONBOW, 或总共 256 像素的 RGB565 图像,用作任何来源灰度值的颜色查找表图像。如果使用,这将在rgb_channel提取之后应用。alpha_palette如果不是-1可以是总共 256 像素的灰度图像,用作alpha调色板,以像素级别调制正在绘制的源图像的 alpha 值, 允许您根据像素的灰度值精确控制像素的 alpha 值。 alpha 查找表中的 255 像素值是不透明的,任何小于 255 的像素值都会变得更透明,直到 0。 如果使用,则在rgb_channel提取之后应用。hint为一个逻辑或标志:image.AREA: 近邻插值缩小使用的面积参数image.BILINEAR: 近邻插值的线性缩放。image.BICUBIC:近邻插值的双立方缩放image.CENTER: 显示图像置中,在缩放后使用。image.HMIRROR:水平镜像图像image.VFLIP: 垂直翻转图像image.TRANSPOSE: 旋转图像(交换x/y)image.EXTRACT_RGB_CHANNEL_FIRST: 在缩放前抽取RGB通道。image.APPLY_COLOR_PALETTE_FIRST: 做法前 使用调色板。image.SCALE_ASPECT_KEEP: 缩放图像以使用显示。image.SCALE_ASPECT_EXPAND: 缩放图像以适应显示(剪切)image.SCALE_ASPECT_IGNORE: 缩放图像以适应显示(伸展)image.ROTATE_90: 图像旋转90度(即 VFLIP | TRANSPOSE)image.ROTATE_180: 图像180度旋转(即 HMIRROR | VFLIP)image.ROTATE_270: 图像旋转270度(即 HMIRROR | TRANSPOSE)
scale是一个两值元组,它控制最小和最大温度(以摄氏度为单位)以缩放ir图像。默认情况下,它等于图像ir最小值 和ir最大值。pixformat如果指定控制最终图像像素格式。timeout如果不是 -1 那么等待新帧的毫秒数。返回一个图像对象。
常量¶
- fir.FIR_NONE¶
 无FIR传感器类型。
- fir.FIR_SHIELD¶
 热成像扩展板型号(MLX90621)。
- fir.FIR_MLX90621¶
 FIR_MLX90621 FIR传感器。
- fir.FIR_MLX90640¶
 FIR_MLX90640 FIR传感器
- fir.FIR_MLX90641¶
 FIR_MLX90640 FIR传感器
- fir.FIR_AMG8833¶
 FIR_MLX90640 FIR传感器
- fir.FIR_LEPTON¶
 FIR_AMG8833 FIR传感器