更新时间:2022-08-05 GMT+08:00

编写逻辑代码

华为HiLens提供了一套HiLens Framework,HiLens Framework通过封装底层接口、实现常用的管理功能,让开发者可以方便的开发Skill,发展AI生态。详细指导和API介绍可参见《开发指南》。

HiLens Framework示例代码

HiLens Kit搭载了HiLens Framework,开发者在开发技能编写逻辑代码时,可以直接调用HiLens Framework的API。

下面是使用HiLens Framework获取摄像头内容并做简单处理的示例。

  • 需要在开发技能时填写代码执行文件。
  • 固件1.1.2及以后版本支持配置技能的Python依赖库。开发者在开发技能过程中,可根据自身需要配置技能的Python依赖库,详情请见配置技能的Python依赖库
#!/usr/bin/python3
# skillframework 1.0.0 python demo

import hilens                                                                   # 导入hilens包
import cv2                                                                      # 导入opencv

def main():
    hilens.init("hello")                                                        # 技能初始化
    model = hilens.Model(hilens.get_model_dir() + 
                "faceDetection.om")                                             # 构造模型管理器。
    disp = hilens.Display(hilens.HDMI)                                          # 构造显示器
    cap = hilens.VideoCapture()                                                 # 构造摄像头
    proc = hilens.Preprocessor()                                                # 构造预处理器

    hilens.set_log_level(hilens.DEBUG)                                          # 设定日志级别
    hilens.Info("This is a skillframework python demo")                         # 打印日志

    for i in range(10):
        frame = cap.read()                                                      # 读取一帧画面
        rframe = proc.resize(frame, 480, 480, 1)                                # 缩放
        inputs = [rframe.flatten()]                                             # 构造模型输入
        outputs = model.infer(inputs)                                           # 推理
        hilens.Info("outputs len: %d" % len(outputs))                           # 打印输出尺寸
        for o in outputs:
            hilens.Info("output shape: " + str(o.shape))
        # post process is ignored
        disp.show(frame)                                                        # 将图像输出到显示器

    hilens.terminate()                                                          # 销毁资源

if __name__ == "__main__":
    main()