注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

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

显示模式,支持 hdmilcd,str类型

输入

默认hdmi,根据显示配置

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

水平镜像参数

输入

可选,默认为 None,根据不同开发板默认配;设置时为bool类型,设为True或False

vflip

垂直翻转参数

输入

可选,默认为 None,根据不同开发板默认配置;设置时为bool类型,设为True或False

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_imgcreate 接口初始化的一帧格式为 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 推理部分的操作。

评论列表
条评论
登录