0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【OpenHarmony鸿蒙实战】在RK3399开发板实现智能门禁人脸识别

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-20 17:38 次阅读

一. 概述

本样例是基于RK3399开发板,使用OpenHarmony3.0-LTS开发的应用。通过定时获取摄像头数据,实现人脸识别比对等功能。

1. 应用运行效果图:

闸机预览界面

2. 智能闸机使用示意图

闸机使用示意图

如上图所示,用户通过摄像头区域时,闸机应用通过获取摄像头数据捕捉到人脸数据,进行人脸位置区域、角度亮度及人脸特征计算和比对,返回识别结果给用户。

二. 快速上手

应用开发

1. 硬件环境准备

  • 预装windows系统的PC机
  • 扬帆RK3399E开发板
  • 开发板专用12V电源适配器
  • USB公对公数据连接线
  • USB外接摄像头
  • HDMI显示器

2. 开发环境准备

3. 功能开发

  • 搭建预览UI页面

修改index.html文件

< !--系统camera组件-- >
< camera id="CameraId" style="width : {{ previewAreaWidth }} px;
        height : {{ previewAreaHeight }} px;" >< /camera >

添加系统组件camera,宽高根据屏幕规格进行计算,注意宽高比例为3:4

  • 实现人脸识别业务功能

修改index.js文件

引入人脸识别库

import seetaface from '@ohos.napi_seetaface';

在应用初始化时清空已注册的人脸特征

seetaface.ClearFaceDatabase()

注册人脸特征,imgPath为注册图片路径,返回值id>=0代表注册成功

var id = seetaface.RegisterImage(imgPath)

开启定时器调用camera的takePhoto函数进行摄像头数据抓取识别,通过回调函数success和fail进行成功和失败处理

camera.takePhoto({
    quality: '',
    success: (res) = > { // 识别成功
        log('LABEL 9527 takePhoto success -- ' + JSON.stringify(res))
        resolve(undefined)
    },
    fail: (err) = > { // 识别失败,err.errorcode为错误码
        log('LABEL 9527 takePhoto fail -- ' + JSON.stringify(err))
        reject(parseInt(err.errorcode))
    }
})

注意:1.由于外接屏幕可能不支持触摸交互,导致无法手动启动应用,可以使用以下命令启动

hdc_std shell aa start -d l -a 应用包名.MainAbility -b 应用包名

2.应用覆盖安装导致相机预览失败,需要重启开发板

hdc_std shell reboot 或 hdc_std target boot

3.由于人脸识别底层业务集成在系统camera组件中,导致camera拍照功能(takePhoto)无法存储图片文件,具体业务请查看系统底层人脸识别开发模块

系统镜像编译及烧录

Linux编译服务器基础环境准备

开发基础环境由windows 工作台和Linux 编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。

1 安装和配置Python
  • 打开Linux终端。
  • 输入如下[命令],查看python版本号,需要使用python3.7以上版本,否则参考 系统基础环境搭建。
    python3 --version;
    
  • 安装并升级Python包管理工具(pip3)。
    sudo apt-get install python3-setuptools python3-pip -y
    sudo pip3 install --upgrade pip
    
2 安装LLVM
  • 下载LLVM工具。

  • 解压LLVM安装包至~/llvm路径下。

    tar -zxvf llvm.tar -C ~/
    
  • 设置环境变量。

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/llvm/bin:$PATH
    
  • 使环境变量生效。

    source ~/.bashrc
    
1. < font size="4" >source ~/.bashrc< /font >
3 安装hc-gen
  • 打开Linux编译服务器终端。

  • 下载hc-gen工具。点击下载地址下载。

  • 解压hc-gen安装包到Linux服务器~/hc-gen路径下。

    tar -xvf hc-gen-0.65-linux.tar -C
    
  • 设置环境变量。

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/hc-gen:$PATH
    
  • 使环境变量生效。

    source ~/.bashrc
    
4 安装编译依赖基础软件(仅Ubuntu 20+需要)
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install make 
sudo apt-get install zlib
sudo apt-get install libffi-dev
5 源码下载&&编译准备

环境搭完后,就该准备代码了。

  • 下载repo
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
  • 下载OpenHarmony源码和编译
  1. 代码下载
    ssh方式:repo init -u ssh://git@gitee.com/openharmony-is/manifest.git -b master -m devboard_rk3399.xml --no-repo-verify
    http方式:repo init -u  https://gitee.com/openharmony-is/manifest.git -b master -m devboard_rk3399.xml --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    bash build/prebuilts_download.sh
    
  2. 打patch
    bash device/rockchip/product/patch.sh
    
  3. 编译
    ./build.sh --product-name rk3399 --ccache
    
6 编译结果

编译产生boot.img在目录 /out/KERNEL_OBJ/kernel/src_tmp/linux-4.19 中

编译产生vender.img、system.img 和userdata.img 在目录out/rk3399/packages/phone/images 中

image.png

烧录

  • 系统环境

window7/windows10

  • 驱动安装包
    瑞芯微软件助手安装包,需解压安装
  • 烧录工具

瑞芯微开发工具

输入图片说明

  • 烧录镜像
    debian_update.img
  • 烧录前准备
    拿到开发板后,第一次烧录OpenHarmony系统前,要先进行整体擦除后,对系统分区,再烧录镜像
  • 擦除flash
    点击升级固件按钮
    输入图片说明
    选择固件
    输入图片说明

擦除flash前,要先使板子进入烧录模式,方法如下:

板子在烧录OpenHarmony系统前,如果有其他系统(如安卓系统),上电后会显示发现一个ADB设备

输入图片说明

先长按uboot按钮,再按一次reset按钮后松开,等待板子显示“发现一个LOADER设备”,板子进入烧录模式

输入图片说明

点击擦除flash按钮,开始擦除

擦除完成后,界面显示擦除成功

  • 第一次烧录

第一次烧录OpenHarmony系统,要先加载全部镜像

在空白处点击右键,选择导入配置,选择ohos.cfg

输入图片说明

导入配置表后如下图所示

输入图片说明

  • 烧录OpenHarmony镜像

烧录OpenHarmony镜像,只需选中boot、vendor、system、userdata,其他分区不选中

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97158
  • 人脸识别
    +关注

    关注

    76

    文章

    4005

    浏览量

    81750
  • 烧录
    +关注

    关注

    8

    文章

    254

    浏览量

    35515
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42728
  • OpenHarmony
    +关注

    关注

    25

    文章

    3657

    浏览量

    16128
收藏 人收藏

    评论

    相关推荐

    Firefly-RK3399 人脸识别 SDK 发布

    ` 本帖最后由 Developer_x 于 2017-6-19 11:14 编辑 利用Firefly-RK3399核心板与底板的组合,搭配上Firefly人脸识别SDK,我们可以实现
    发表于 06-13 14:20

    人脸识别是用rk3288还是rk3399主板好?

    `人脸识别主板,是用rk3288还是rk3399主板好啊?`
    发表于 04-23 15:03

    如何实现基于ncnn的RK3399上的mtcnn人脸检测?

    如何在RK3399上烧录安卓系统?如何实现基于ncnn的RK3399上的mtcnn人脸检测?
    发表于 03-04 07:29

    如何对RK3399的HDMI进行人脸识别

    如何对RK3399的HDMI进行人脸识别呢?如何对识别结果进行模糊化处理呢?
    发表于 03-07 12:48

    求一种Firefly RK3399平台上搭建人脸识别SDK开发环境的方案

    1、如何在Firefly RK3399平台利用人脸识别SDK搭建实时人脸比对DEMO按要求搭建人脸识别
    发表于 06-01 16:13

    OpenHarmony样例】基于RK3399开发板开发智能门禁人脸识别(JS)样例

    一. 概述本样例是基于RK3399开发板,使用OpenHarmony3.0-LTS开发的应用。通过定时获取摄像头数据,实现
    发表于 08-24 17:35

    RK3399-firefly开发板原理图

    RK3399-firefly开发板原理图
    发表于 09-16 09:35 292次下载

    Firefly-RK3399开发板介绍

    Firefly-RK3399有灵活的启动方式。一般情况下,除非硬件损坏,Firefly-RK3399开发板是不会变砖的。
    的头像 发表于 11-23 11:30 3401次阅读
    Firefly-<b class='flag-5'>RK3399</b><b class='flag-5'>开发板</b>介绍

    简单介绍RK3399开发板RK3399主板的相关参数

    用过RK3288主板的朋友都知道,RK3399开发板延续了RK3288的linux系统开源!作为Rockchip旗舰级芯片,RK3399具有
    发表于 12-09 14:14 7262次阅读

    浅谈RK3399开发板

    联智通达3399开发板基于联智通达的RK3399处理器设计,Rockchip RK3399是联智通达推出的一款低功耗、高性能的应用处理器芯片,该芯片基于Big.Little架构,即具有
    发表于 03-23 09:46 2048次阅读

    RK3399富设备开发板的亮点有哪些

    首款搭载OpenHarmony 3.0富设备开发板,基于瑞芯微RK3399的L2级别开发板,可实现LCD显示、触摸、多媒体、上网等基本特性。
    的头像 发表于 03-25 09:10 1388次阅读

    RK3399开发板Ubuntu系统下实现双屏显示及异触

    本文以飞凌嵌入式RK3399开发板为基础讲解,主要介绍了Ubuntu系统下双屏显示及异触,其它RK3399平台请参考使用!
    发表于 03-30 14:01 1555次阅读

    什么是RK3399开发板基础配置

    FireFly-RK3399自带的kernel默认是没有开启NFS服务的。因此,想要挂载到虚拟机上,必须在开发板上安装NFS服务。而FireFly-RK3399默认是可以直接连接无线网络的,因此,就省去了配置PC网卡的麻烦。
    的头像 发表于 02-17 16:10 1637次阅读

    瑞迅科技RK3399 3D人脸识别系统应用

    瑞迅科技RK3399 3D人脸识别系统应用 目前基于RK3399的三维人脸识别产品具有高
    的头像 发表于 01-12 16:49 869次阅读
    瑞迅科技<b class='flag-5'>RK3399</b> 3D<b class='flag-5'>人脸</b><b class='flag-5'>识别</b>系统应用

    RK3399 BOX开发板用户指南

    电子发烧友网站提供《RK3399 BOX开发板用户指南.pdf》资料免费下载
    发表于 09-15 15:37 2次下载
    <b class='flag-5'>RK3399</b> BOX<b class='flag-5'>开发板</b>用户指南