跳到主要内容

Display对象

Display对象实现了视频显示功能,可以将图像数据通过HDMI接口输出到显示器,该对象包含displayset_imgset_graph_rectset_graph_wordclose等方法,详细说明如下:

display

【功能描述】

显示模块初始化,并配置显示参数

【函数声明】
Display.display(chn, width, height, vot_intf, vot_out_mode)
【参数描述】
参数名称定义描述取值范围
chn显示输出层0: 视频层,2: 图形层
width输入图像的宽度不超过1920
height输入图像的高度不超过1080
vot_intf视频接口输出分辨率默认为0,1080p
vot_out_mode视频输出接口默认为1,HDMI输出
【使用方法】
#create display object
disp = libsrcampy.Display()

#enable display function, solution: 1080p, interface: HDMI
ret = disp.display(0, 1920, 1080, 0, 1)
【返回值】
返回值描述
0成功
-1失败
【注意事项】

开发板HDMI接口分辨率基于显示器EDID获取,目前只支持1920x10801280x7201024x600800x480几种分辨率。使能显示模块时,需要注意配置分辨率跟显示器实际分辨率相匹配。

【参考代码】

set_img

【功能描述】

向display模块输入显示数据,格式需要为NV12

【函数声明】
Display.set_img(img)
【参数描述】
参数名称定义描述取值范围
img需要显示的图像数据NV12格式
【使用方法】

【返回值】
返回值描述
0成功
-1失败
【注意事项】

该接口需要在使用display接口使能显示功能后使用,送入数据需要为NV12格式

【参考代码】
import sys, os, time

import numpy as np
import cv2
from hobot_vio import libsrcampy

def test_display():
#create display object
disp = libsrcampy.Display()

#enable display function
ret = disp.display(0, 1920, 1080, 0, 1)
print ("Display display 0 return:%d" % ret)

fo = open("output.img", "rb")
img = fo.read()
fo.close()

#send image data to display
ret = disp.set_img(img)
print ("Display set_img return:%d" % ret)

time.sleep(3)

disp.close()
print("test_display done!!!")

test_display()

set_graph_rect

【功能描述】

在显示模块的图形层绘制矩形框

【函数声明】
Display.set_graph_rect(x0, y0, x1, y1, chn, flush, color, line_width)
【参数描述】
参数名称定义描述取值范围
x0绘制矩形框左上角的坐标值x不超过视频画面尺寸
y0绘制矩形框左上角的坐标值y不超过视频画面尺寸
x1绘制矩形框右下角的坐标值x不超过视频画面尺寸
y1绘制矩形框右下角的坐标值y不超过视频画面尺寸
chn图形层通道号范围2~3,默认为2
flush是否清零图形层buffer0:否,1:是
color矩形框颜色设置ARGB8888格式
line_width矩形框边的宽度范围1~16,默认为4
【使用方法】
#enable graph layer 2
ret = disp.display(2)
print ("Display display 2 return:%d" % ret)

#set osd rectangle
ret = disp.set_graph_rect(100, 100, 1920, 200, chn = 2, flush = 1, color = 0xffff00ff)
【返回值】
返回值描述
0成功
-1失败
【注意事项】

该接口需要在使用display接口使能显示功能后使用

【参考代码】

set_graph_word

【功能描述】

在显示模块的图形层绘制字符

【函数声明】
Display.set_graph_word(x, y, str, chn, flush, color, line_width)
【参数描述】
参数名称描述取值范围
x绘制字符的起始坐标值x不超过视频画面尺寸
y绘制字符的起始坐标值y不超过视频画面尺寸
str需要绘制的字符数据GB2312编码
chn图形层通道号范围2~3,默认为2
flush是否清零图形层buffer0:否,1:是
color字符颜色设置ARGB8888格式
line_width字符线条的宽度范围1~16,默认为1
【使用方法】
#enable graph layer 2
ret = disp.display(2)
print ("Display display 2 return:%d" % ret)

#set osd string
string = "horizon"
ret = disp.set_graph_word(300, 300, string.encode('gb2312'), 2, 0, 0xff00ffff)
print ("Display set_graph_word return:%d" % ret)
【返回值】
返回值描述
0成功
-1失败
【注意事项】

该接口需要在使用display接口使能显示功能后使用

【参考代码】

close

【功能描述】

关闭显示模块

【函数声明】
Display.close()
【参数描述】

【使用方法】

【返回值】
返回值描述
0成功
-1失败
【注意事项】

该接口需要在使用display接口使能显示功能后使用

【参考代码】

bind接口

【功能描述】

该接口可以把CameraEncoderDecoderDisplay模块的输出与输入数据流进行绑定,绑定后无需用户操作,数据可在绑定模块之间自动流转。例如,绑定 CameraDisplay 后,摄像头数据会自动通过显示模块输出到显示屏上,无需调用额外接口。

【函数声明】
    libsrcampy.bind(src, dst)
【参数描述】
参数名称描述取值范围
src源数据模块CameraEncoderDecoder模块
dst目标数据模块CameraEncoderDecoderDisplay模块
【使用方法】
#create camera object
cam = libsrcampy.Camera()
ret = cam.open_cam(0, 1, 30, [1920, 1280], [1080, 720])
print("Camera open_cam return:%d" % ret)

#encode start
enc = libsrcampy.Encoder()
ret = enc.encode(0, 1, 1920, 1080)
print("Encoder encode return:%d" % ret)

#bind, input: cam, output: enc
ret = libsrcampy.bind(cam, enc)
print("libsrcampy bind return:%d" % ret)
【返回值】
返回值描述
0成功
-1失败
【注意事项】

【参考代码】

unbind接口

【功能描述】

将两个绑定过的模块解绑

【函数声明】
libsrcampy.unbind(src, dst)
【参数描述】
参数名称描述取值范围
src源数据模块CameraEncoderDecoder模块
dst目标数据模块CameraEncoderDecoderDisplay模块
【使用方法】
#create camera object
cam = libsrcampy.Camera()
ret = cam.open_cam(0, 1, 30, [1920, 1280], [1080, 720])
print("Camera open_cam return:%d" % ret)

#encode start
enc = libsrcampy.Encoder()
ret = enc.encode(0, 1, 1920, 1080)
print("Encoder encode return:%d" % ret)

#bind, input: cam, output: enc
ret = libsrcampy.bind(cam, enc)
print("libsrcampy bind return:%d" % ret)

#unbind, input: cam, output: enc
ret = libsrcampy.unbind(cam, enc)
print("libsrcampy unbind return:%d" % ret)
【返回值】
返回值描述
0成功
-1失败
【注意事项】

【参考代码】