3.2 Display 模块 API 手册#
注意
该模块自固件版本 V0.7 起有显著更改,若您使用的是 V0.7 之前的固件,请参考旧版本文档。
1. 概述#
本手册旨在指导开发人员使用 Micro Python API 调用 CanMV Display 模块,实现图像显示功能。
2. API 介绍#
2.1 init#
描述
初始化 Display 通路,包括 VO 模块、 DSI 模块和 LCD/HDMI。
必须在 MediaManager.init()之前调用
语法
init(type=None, width=None, height=None, osd_num=1, to_ide=False, fps=None, quality=90)
参数
参数名称 |
描述 |
输入 / 输出 |
说明 |
---|---|---|---|
type |
输入 |
必选 |
|
width |
分辨率宽度 |
输入 |
默认值根据 |
height |
分辨率高度 |
输入 |
默认值根据 |
osd_num |
在 show_image 时支持的 LAYER 数量 |
输入 |
越大占用内存越多 |
to_ide |
是否将屏幕显示传输到 IDE 显示 |
输入 |
开启时占用更多内存 |
fps |
显示帧率 |
输入 |
仅支持 |
quality |
设置 |
输入 |
仅在 |
返回值
返回值 |
描述 |
---|---|
无 |
2.2 show_image#
描述
在屏幕上显示图像。
语法
show_image(img, x=0, y=0, layer=None, alpha=255, flag=0)
参数
参数名称 |
描述 |
输入 / 输出 |
说明 |
---|---|---|---|
img |
显示的图像 |
输入 |
|
x |
起始坐标的 x 值 |
输入 |
|
y |
起始坐标的 y 值 |
输入 |
|
layer |
显示到 指定层 |
输入 |
仅支持 |
alpha |
图层混合 alpha |
输入 |
|
flag |
显示 标志 |
输入 |
返回值
返回值 |
描述 |
---|---|
无 |
2.3 deinit#
描述
执行反初始化, deinit 方法会关闭整个 Display 通路,包括 VO 模块、 DSI 模块和 LCD/HDMI。
必须在 MediaManager.deinit()之前调用
必须在 sensor.stop()之后调用
语法
deinit()
返回值
返回值 |
描述 |
---|---|
无 |
2.4 bind_layer#
描述
将 sensor
或 vdec
模块的输出绑定到屏幕显示。无需用户手动干预即可持续显示图像。
必须在 init 之前调用
语法
bind_layer(src=(mod, dev, layer), dstlayer, rect=(x, y, w, h), pix_format, alpha, flag)
参数
参数名称 |
描述 |
输入 / 输出 |
说明 |
---|---|---|---|
src |
|
输入 |
可通过 |
dstlayer |
绑定到 Display 的 显示层 |
输入 |
可绑定到 |
rect |
显示区域 |
输入 |
可通过 |
pix_format |
图像像素格式 |
输入 |
可通过 |
alpha |
图层混合 alpha |
输入 |
|
flag |
显示 标志 |
输入 |
|
返回值
返回值 |
描述 |
---|---|
无 |
3. 数据结构描述#
3.1 type#
类型 |
分辨率 |
备注 |
---|---|---|
LT9611 |
1920x1080@30 |
默认值 |
1280x720@30 |
||
640x480@60 |
||
HX8377 |
1080x1920@30 |
默认值 |
ST7701 |
800x480@30 |
默认值 |
854x480@30 |
可设置为竖屏 480x854 |
|
VIRT |
640x480@90 |
默认值 |
|
3.2 layer#
K230 提供 2 层视频图层支持和 4 层 OSD 图层支持。分列如下:
显示层 |
说明 |
备注 |
---|---|---|
LAYER_VIDEO1 |
仅可在 bind_layer 中使用 |
|
LAYER_VIDEO2 |
仅可在 bind_layer 中使用 |
|
LAYER_OSD0 |
支持 show_image 和 bind_layer 使用 |
|
LAYER_OSD1 |
支持 show_image 和 bind_layer 使用 |
|
LAYER_OSD2 |
支持 show_image 和 bind_layer 使用 |
|
LAYER_OSD3 |
支持 show_image 和 bind_layer 使用 |
3.3 flag#
标志 |
说明 |
备注 |
---|---|---|
FLAG_ROTATION_0 |
旋转 |
|
FLAG_ROTATION_90 |
旋转 |
|
FLAG_ROTATION_180 |
旋转 |
|
FLAG_ROTATION_270 |
旋转 |
|
FLAG_MIRROR_NONE |
不镜像 |
|
FLAG_MIRROR_HOR |
水平镜像 |
|
FLAG_MIRROR_VER |
垂直镜像 |
|
FLAG_MIRROR_BOTH |
水平与垂直镜像 |
4. 示例程序#
以下为示例程序:
from media.display import * # 导入 display 模块,使用 display 相关接口
from media.media import * # 导入 media 模块,使用 media 相关接口
import os, time, image # 导入 image 模块,使用 image 相关接口
# 使用 LCD 作为显示输出
Display.init(Display.ST7701, width=800, height=480, to_ide=True)
# 初始化媒体管理器
MediaManager.init()
# 创建用于绘图的图像
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(" 用户停止:", e)
except BaseException as e:
print(f" 异常:{e}")
Display.deinit()
MediaManager.deinit()