Skip to main content

3.2 Display模块API手册

前言

概述

此文档介绍CanMV Display模块,用以指导开发人员如何调用MicroPython API实现图像显示功能。

读者对象

本文档(本指南)主要适用于以下人员:

  • 技术支持工程师
  • 软件开发工程师

缩略词定义

简称说明
VOVideo Output
DSIDisplay Serial Interface

修订记录

文档版本号修改说明修改者日期
V1.0初版王权2023-09-15
V2.0重构APIxel2024-06-11

1. 概述

该模块在固件版本V0.6之后有较大改变,若使用V0.6之前固件请参考旧版本的文档

此文档介绍CanMV Display模块,用以指导开发人员如何调用Micro Python API实现图像显示功能。

2. API描述

2.1 init

【描述】

初始化整个Display通路,包括VO模块、DSI模块、LCD/HDMI

必须在MediaManager.init()之前调用

【语法】

def init(type = None, width = None, height = None, osd_num = 1, to_ide = False, fps = None)

【参数】

参数名称描述输入/输出说明
type显示设备类型输入必选
width分辨率宽度输入默认值根据type决定
height分辨率高度输入默认值根据type决定
osd_numshow_image时可以支持的LAYER数量输入越大占用内存越多
to_ide是否将屏幕显示传输到IDE显示输入开启会占用更多内存
fps显示帧率输入仅支持VIRT类型

【返回值】

返回值描述

【注意】

【举例】

【相关主题】

2.2 show_image

【描述】

在屏幕上显示图像

【语法】

def show_image(img, x = 0, y = 0, layer = None, alpha = 255, flag = 0)

【参数】

参数名称描述输入/输出说明
img显示的图像输入
x起始坐标的x值输入
y起始坐标的y值输入
layer显示到指定层输入仅支持OSD层 若需要多层请设置init参数中的osd_num
alpha图层混合alpha输入
flag显示标志输入

【返回值】

返回值描述

【注意】

【举例】

【相关主题】

2.3 deinit

【描述】

执行反初始化,deinit方法会关闭整个Display通路,包括VO模块、DSI模块、LCD/HDMI

必须在MediaManager.deinit()之前调用 必须在sensor.stop()之后调用

【语法】

def deinit()

【返回值】

返回值描述

【注意】

【举例】

【相关主题】

2.4 bind_layer

【描述】

绑定sensorvdec模块输出到屏幕显示 不需要用户手动参与即可将图像持续显示到屏幕

必须在init之前调用

【语法】

def bind_layer(src=(mod, dev, layer), dstlayer, rect = (x, y, w, h), pix_format, alpha, flag)

【参数】

参数名称描述输入/输出说明
srcsensorvdec 输出信息输入可通过sensor.bind_info()获取
dstlayer绑定到Display的显示层输入可绑定到videoosd
rect显示区域输入可通过sensor.bind_info()获取
pix_format图像像素格式输入可通过sensor.bind_info()获取
alpha图层混合alpha输入
flag显示标志输入LAYER_VIDEO1不支持

【返回值】

返回值描述

【注意】

【举例】

【相关主题】

3. 数据结构描述

3.1 type

类型分辨率 (width x height @ fps)备注
LT96111920x1080@30默认值
1280x720@30
640x480@60
HX83771080x1920@30默认值
ST7701800x480@30默认值 可设置为竖屏480x800
854x480@30可设置为竖屏480x854
VIRT640x480@90默认值
IDE调试专用,不显示内容在外接屏幕 用户可自定义设置分辨率(64x64)-(4096x4096)和帧率(1-200)

3.2 layer

显示层说明备注
LAYER_VIDEO1bind_layer可用
LAYER_VIDEO2bind_layer可用
LAYER_OSD0支持show_imagebind_layer使用
LAYER_OSD1支持show_imagebind_layer使用
LAYER_OSD2支持show_imagebind_layer使用
LAYER_OSD3支持show_imagebind_layer使用

3.3 flag

标志说明备注
FLAG_ROTATION_0旋转0
FLAG_ROTATION_90旋转90
FLAG_ROTATION_180旋转180
FLAG_ROTATION_270旋转270
FLAG_MIRROR_NONE不镜像
FLAG_MIRROR_HOR水平镜像
FLAG_MIRROR_VER垂直镜像
FLAG_MIRROR_BOTH水平与垂直镜像

4. 示例程序

例程

from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入display模块,使用display相关接口
import os, time, image #导入image模块,使用image相关接口

# use lcd as display output
Display.init(Display.ST7701, width = 800, height = 480, to_ide = True)
# init media manager
MediaManager.init()

# create image for drawing
img = image.Image(800, 480, image.RGB565)
img.clear()
img.draw_string_advanced(0,0,32, "Hello World!,你好世界!!!", color = (255, 0, 0))

Display.show_image(img)

try:
while True:
time.sleep(1)
os.exitpoint()
except KeyboardInterrupt as e:
print("user stop: ", e)
except BaseException as e:
print(f"Exception {e}")

Display.deinit()
MediaManager.deinit()