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_LEPTON
on 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_SHIELD
andfir.FIR_MLX90621
:15 位 -> 最高 ~950C。
16 位 -> 最高约 750C。
17 位 -> 最大 ~600C。
18 位 -> 最大 ~450C。
For the
fir.FIR_MLX90640
andfir.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传感器