PipeLine 模块 API 手册#
概述#
本手册旨在指导开发人员使用 MicroPython 开发 AI Demo 时,构建完整的 Media 流程,实现从 Camera 获取图像和显示 AI 推理结果的功能。该模块封装了单摄双通道默认配置,一路将 Camera 的图像直接送给 Display 模块显示;另一路使用 get_frame 接口获取一帧图像供 AI 程序使用。
API 介绍#
init#
描述
PipeLine 构造函数,初始化 AI 程序获取图像的分辨率和显示相关的参数。
语法
from libs.PipeLine import PipeLine
pl=PipeLine(rgb888p_size=[1920,1080],display_mode='hdmi',display_size=None,osd_layer_num=1,debug_mode=0)
参数
参数名称 |
描述 |
输入 / 输出 |
说明 |
|---|---|---|---|
rgb888p_size |
AI 程序的输入图像分辨率,list类型,包括宽高,如[1920,1080] |
输入 |
默认[224,224],根据 AI 程序决定 |
display_mode |
显示模式,支持 |
输入 |
默认 |
display_size |
显示分辨率,list类型,包括宽高,如[1920,1080],如果为None,根据显示屏决定;否则按输入设置 |
输入 |
默认None,根据显示屏决定 |
osd_layer_num |
osd显示层数,用户程序在原画上叠加的层数 |
输入 |
默认为1 |
debug_mode |
调试计时模式,0计时,1不计时,int类型 |
输入 |
默认为0 |
返回值
返回值 |
描述 |
|---|---|
PipeLine |
PipeLine实例 |
create#
描述
PipeLine 初始化函数,初始化 Media 流程中的 Sensor/Display/OSD配置。
语法
# 默认配置
pl.create()
# 用户也可以自行创建实例传入
from media.sensor import *
sensor=Sensor()
pl.create(sensor=sensor)
参数
参数名称 |
描述 |
输入 / 输出 |
说明 |
|---|---|---|---|
sensor |
Sensor实例,用户可以在外部创建sensor实例并传入 |
输入 |
可选,不同开发板有默认配置 |
hmirror |
水平镜像参数 |
输入 |
可选,默认为 |
vflip |
垂直翻转参数 |
输入 |
可选,默认为 |
fps |
sensor 帧率参数 |
输入 |
可选,默认60,设置Sensor的帧率 |
to_ide |
是否将屏幕显示传输到 IDE 显示 |
输入 |
开启时占用更多内存 |
返回值
返回值 |
描述 |
|---|---|
无 |
get_frame#
描述
获取一帧图像给 AI 程序使用,获取图像分辨率为PipeLine构造函数设置的rgb888p_size,图像格式为Sensor.RGBP888,返回时转换成ulab.numpy.ndarray格式。
语法
img=pl.get_frame()
返回值
返回值 |
描述 |
|---|---|
img |
格式为ulab.numpy.ndarray,分辨率为rgb888p_size的图像数据 |
show_image#
描述
将在 pl.osd_img 上绘制的 AI 结果在 Display 上叠加显示。pl.osd_img 是 create 接口初始化的一帧格式为 image.ARGB8888 的空白图像,用于绘制 AI 结果。
语法
pl.show_image()
返回值
返回值 |
描述 |
|---|---|
无 |
get_display_size#
描述
获取当前屏幕配置的宽高。
语法
display_size=pl.get_display_size()
返回值
返回值 |
描述 |
|---|---|
list |
返回屏幕配置的显示宽高[display_width,display_height] |
destroy#
描述
反初始化PipeLine实例。
语法
img=pl.destroy()
返回值
返回值 |
描述 |
|---|---|
无 |
示例程序#
以下为示例程序:
from libs.PipeLine import PipeLine
from libs.Utils import ScopedTiming
from media.media import *
import gc
import sys,os
if __name__ == "__main__":
# 显示模式,默认"hdmi",可以选择"hdmi"和"lcd"
display_mode="hdmi"
# 初始化PipeLine,用于图像处理流程
pl = PipeLine(rgb888p_size=[1920,1080], display_mode=display_mode)
pl.create() # 创建PipeLine实例
display_size = pl.get_display_size()
while True:
with ScopedTiming("total",1):
img = pl.get_frame() # 获取当前帧数据
print(img.shape)
gc.collect() # 垃圾回收
pl.destroy() # 销毁PipeLine实例
上述代码中,通过pl.get_frame()接口获取一帧分辨率为rgb888p_size的图像,类型为ulab.numpy.ndarray,排布为CHW。基于这段代码,您可以专注于 AI 推理部分的操作。
