1
概述
本Demo是基于Hi3516開發板,使用開源OpenHarmony3.0-LTS開發的應用。通過獲取攝像頭數據,實現預覽拍照以及路視頻等功能。并且通過后臺AI服務識別喚醒詞來進行語音控制拍照及錄視頻。
1. 應用運行效果圖:
此為相機的預覽界面。
2. 智能相機使用示意圖
![7ed1e128-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97WAVgUGAADuasHkpC4544.png)
如上圖所示,用戶對著相機說對應的喚醒詞,相機收集到對應的音頻,經過AI服務識別對應的文字,最后傳到相機進行對應的操作。
2
快速上手
1. 開發環境準備
硬件準備
Linux編譯服務器基礎環境準備
開發基礎環境由windows 工作臺和Linux 編譯服務器組成。windows 工作臺可以通過samba 服務或ssh 方式訪問Linux編譯服務器。其中windows 工作臺用來燒錄和代碼編輯,Linux編譯服務器用來編譯OpenHarmony代碼,為了簡化步驟,Linux編譯服務器推薦安裝Ubuntu20.04。
安裝和配置Python
-
打開Linux終端。
-
輸入如下命令,查看python版本號,需要使用python3.7以上版本,否則參考 系統基礎環境搭建。
python3 --version
左右滑動查看全部內容
-
安裝并升級Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
左右滑動查看全部內容
安裝LLVM
-
下載LLVM工具。
-
解壓LLVM安裝包至~/llvm路徑下。
tar -zxvf llvm.tar -C ~/
左右滑動查看全部內容
-
設置環境變量
vim ~/.bashrc
左右滑動查看全部內容
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/llvm/bin:$PATH
左右滑動查看全部內容
-
使環境變量生效
source ~/.bashrc
左右滑動查看全部內容
安裝hb
運行如下命令安裝hb。
python3 -m pip install --user ohos-build
左右滑動查看全部內容
設置環境變量
vim ~/.bashrc
左右滑動查看全部內容
將以下命令拷貝到.bashrc文件的最后一行,保存并退出
export PATH=~/.local/bin:$PATH
左右滑動查看全部內容
執行如下命令更新環境變量
source ~/.bashrc
左右滑動查看全部內容
執行"hb -h",有打印以下信息即表示安裝成功
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
左右滑動查看全部內容
Hi3516開發環境準備
將Linux shell改為bash,查看shell是否為bash,在終端運行如下命令
ls -l /bin/sh
左右滑動查看全部內容
如果顯示為“/bin/sh -> bash”則為正常,否則請按以下方式修改:
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
左右滑動查看全部內容
安裝編譯依賴基礎軟件(僅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
左右滑動查看全部內容
安裝文件打包工具
打開Linux編譯服務器終端。運行如下命令,安裝dosfstools。
sudo apt-get install dosfstools
左右滑動查看全部內容
運行如下命令,安裝mtool
sudo apt-get install mtools
左右滑動查看全部內容
運行如下命令,安裝mtd-utils
sudo apt-get install mtd-utils
左右滑動查看全部內容
安裝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
左右滑動查看全部內容
安裝Java 虛擬機環境
-
打開Linux編譯服務器終端
-
安裝Java運行時環境(JRE)
sudo apt-get install default-jre
左右滑動查看全部內容
-
安裝Java sdk開發工具包
sudo apt-get install default-jdk
左右滑動查看全部內容
PS:
java虛擬機是應用簽名打包時才會用到的,SDK中默認的3個系統應用是需要簽名打包,所以需要安裝java虛擬機,沒有安裝的話,應用簽名打包時會報如下錯誤:
![7ee58372-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97WAa6t8AAU0COAvj9o317.png)
如果不涉及到應用的簽名打包,可以不用安裝此環境。
源碼下載&&編譯準備
環境搭完后,就該準備代碼了。
OpenHarmony源碼下載方法多種多樣,本文重點介紹linux + repo方式下載。
下載repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
左右滑動查看全部內容
下載OpenHarmony源碼
#特別注意:請下載OpenHarmony 3.0 LTS 版本,后續會更新支持OpenHarmony其他版本
左右滑動查看全部內容
下載智能相機代碼
具體倉庫地址: knowledge_demo_smart_home
通過git命令下載(方便后期代碼上傳管理,建議先將倉庫fork到自己賬號目錄,然后再下載):
git clone git@gitee.com:xxxxxxx/knowledge_demo_smart_home.git
其中xxxxxxx為fork后相關賬號名字。
左右滑動查看全部內容
代碼拷貝
a. 在OpenHarmony的vendor目錄下新建一個team_x的目錄:
mkdir vendor/team_x
左右滑動查看全部內容
![7f02f038-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97WAEktIAAAcYrPJiCk581.png)
b. 將下載的智能中控屏代碼的代碼拷貝到新建的team_x下面:
cp -rf ../knowledge_demo_smart_home/dev/team_x/smart_camera/ vendor/team_x/
左右滑動查看全部內容
![7f10a610-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97WACK5rAABdjFKAODs640.png)
![7f29262c-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97WAMnQtAABAvzZBmgA516.png)
到此,代碼就準備完成,可以進行編譯了。
2. 代碼編譯
代碼目錄結構
在編譯代碼前,可以先了解一下代碼目錄結構,我們的demo主要包含2個部分,一個是相機(demo_cameraApp),負責相機相關功能,其次就是AI語音識別服務(demo_keyword_spotting),否則語音是采集以及識別。
demo_cameraApp 代碼目錄結構:
|—— BUILD.gn // 編譯腳本
|—— resources // 資源文件
|—— config.json // 安裝包所需要的json文件
|—— include
| |—— smart_camera_ability.h // 入口類的頭文件
| |—— smart_camera_ability_slice.h // 相機頁面類定義的頭文件
| |—— camera_manager.h // 相機功能封裝類的頭文件
| |—— event_listener.h // 監聽事件類的頭文件
| |—— server_socket.h // socket 服務相關接口的頭文件
| |__ ui_config.h // 相機UI相關宏定義的頭文件
|
|__ src
|—— smart_camera_ability.cpp
|—— smart_camera_ability_slice.cpp // 相機頁面相關實現
|—— camera_manager.cpp // 相機功能封裝類的實現
|__ server_socket.c // socket 服務相關接口的實現,主要用來接收ai識別后的結果
左右滑動查看全部內容
demo_keyword_spotting 代碼目錄結構:
|—— BUILD.gn // 編譯腳本
|—— kws_app.cpp // 應用入口
|—— kws_manager.cpp // 語音識別管理相關實現
|—— kws_manager.h // 語音識別管理頭文件
|—— audio_cache.cpp // 語音采集相關實現
|—— audio_cache.h // 語音采集頭文件
|—— client_socket.c // socket 服務相關接口的實現,主要用來發送識別后的結果
|__ client_socket.h // socket 服務相關接口的頭文件
左右滑動查看全部內容
特別說明:AI語音識別服務是一個后臺服務應用,因此我們需要通過設置讓它自啟動,配置文件如下
vendor/team_x/smart_camera/init_configs/init_liteos_a_3516dv300.cfg
左右滑動查看全部內容
具體修改步驟:
-
在services服務模塊最后添加以下代碼
"services" : [
.
.
.
{
"name" : "kws_app",
"path" : ["/bin/smart_kws_app"],
"uid" : 2,
"gid" : 2,
"once" : 0,
"importance" : 0,
"caps" : []
}
]
左右滑動查看全部內容
在jobs模塊中找到"name" : "post-init",在"cmd"的最后加上”start kws_app“
{
"name" : "post-init",
"cmds" : [
.
.
.
"start kws_app"
]
}
左右滑動查看全部內容
代碼編譯
源碼和環境準備完后,接下來就是編譯,編譯涉及的指令有2條,hb set和hb build -f 。
hb set -- 設置工程目錄和選擇對應的目標,通過鍵盤的上下鍵來選擇。
![7f3d31d0-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97aACezBAAJ7eykshv8407.png)
hb build -f -- 開始全量編譯。(hb build 為增量編譯)
![7f5e53d8-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97aANwK2AAZ5ny28F88442.png)
編譯完后會生成對應整個系統固件(u-boot-hi3516dv300.bin,OHOS_Image.bin,rootfs_vfat.img, userfs_vfat.img)以及我們應用對應的so文件。
其中u-boot-hi3516dv300.bin在device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/:
![7f85b40a-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97aAEaK3AAERYBIBekU504.png)
OHOS_Image.bin,rootfs_vfat.img,以及userfs_vfat.img在out目錄下:
![7f9d29d2-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97aAB52FAAIOo9-rM40816.png)
對應的libsmart_camera.so在out/hispark_taurus/smart_camera/usr/lib/ 目錄下:
![7fb2c828-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97aAJ7wYAACjWneLJgo466.png)
AI服務可執行程序在out/hispark_taurus/smart_camera/bin/ 目錄下:
![7fc4c4ba-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eAT_NwAAEwpGrKY7s695.png)
以下表格為所有生成的固件及對應的位置:
![7fd4a4e8-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eAYrFVAACz-GqpA5Y143.png)
3. 固件燒錄
燒錄工具選擇
固件編譯完后,是需要燒錄到單板的。這里我們用的是HiTool工具燒錄的。(HiTool工具下載地址:HiHope官網)
燒錄步驟
打開HiTool工具,如下圖:
![7feb7d1c-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eAPbweAAHqA3PmnJI277.png)
燒寫步驟按照圖中標注即可。點擊燒入后,燒錄工具會提示重新上電,此時重啟單板即可。
![80022eea-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eARqwSAAFvWD-xfKE386.png)
燒錄結果
燒錄成功后,會彈出如下提示,單板也會自行啟動。
![8015c540-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eAQcMMAAD8EuScnqk645.png)
燒錄失敗的話需要根據失敗提示查找一下原因。一般情況需要檢查一下串口是否連接正常,網線是否正確插入,IP是否選擇正常等。
查看IP的方法:當單板上電后并正確插入網線后,點擊工具上刷新按鈕,此時單板IP會自動添加到服務器IP列表中。
![802bbd1e-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97eAWBUHAACD6ziX6oc270.png)
IDE燒錄
另外,OpenHarmony官網有提供一種通過IDE來燒錄的,具體燒錄步驟請參考文檔:3516上快速運行Hello OHOS。
特別說明
如果是第一次燒錄程序的話,單板在啟動的時候需要設置bootargs,否則不能正常啟動。單板第一次啟動會停在hisilicon界面:
![804c11ae-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAAYY2AAAxkkwQkjU941.png)
我們需要輸入以下指令:
setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";
setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw";
saveenv
reset
左右滑動查看全部內容
![8063d730-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAQjiIAAAxNbPJZiQ602.png)
到此,燒錄已經完成,設備也正常啟動。
4. 應用安裝
打包應用
本demo是以安裝包的形式安裝到系統中啟動運行的。因此,在安裝應用前,需要將應用打包成安裝包。
將編譯好的libsmart_camera.so文件與工程目錄下的res以及config.json文件通過壓縮打包成zip格式(三個文件直接壓縮,不能壓縮文件夾),并將后綴名改為hap(smart_camera.hap)。
![807933b4-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAOfkxAABOZ9VViRk340.png)
掛載NFS
應用打包后,我們是通過NFS方式將單板掛載到本地,通過相關的指令來安裝的,NFS掛載方法參照社區文章:Hi3516通過NFS掛載方式與Windows共享文件。
![8095248e-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAaIHjAAAH30lBnlo524.png)
安裝
通過nfs是單板連接到本地電腦后,我們可以通過bm安裝指令進行安裝。bm 安裝工具在系統編譯完后會自動生成,路徑在:
out/hispark_taurus/smart_camera/dev_tools/bin/
左右滑動查看全部內容
![80a5fc96-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAD5x5AAEcJ28hTW4831.png)
由于bm默認安裝的應用為已經簽名的應用,所以我們在安裝前需要先將簽名去掉。
bm set -s disable // 去簽名
bm install -p filename // 安裝應用filename, filename需要指定路徑
左右滑動查看全部內容
![80b72ca0-ab84-11ec-aa7f-dac502259ad0.png](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97iAOJZhAABJRHDSpdk817.png)
安裝完后桌面會顯示對應應用的ICON,直接點擊ICON即可以啟動相機的應用。
5. 使用指南
![80d98e58-ab84-11ec-aa7f-dac502259ad0.gif](https://file1.elecfans.com//web2/M00/94/AD/wKgaomTl97mAFBTeAASQq0a1r1g425.gif)
由于本demo涉及到攝像頭的讀寫,故需要申請了相關的權限。在使用本demo前需要在setting中打開對應的權限。具體操作:
-
點擊 setting-->應用-->smart_camera,然后將所有權限打開。
-
本demo帶有相機的所有功能,包含預覽,拍照,錄像以及跳轉到圖庫查看對應拍的圖片和錄制的視頻。
-
本demo最主要的功能是語音控制相機,需要對準板子上的mic風說喚醒詞,目前支持2個喚醒詞(Hi,xiaowen以及Nihao,wenwen),分別對應控制相機的拍照以及錄像功能。
原文標題:OpenHarmony開發樣例:智能相機
文章出處:【微信公眾號:HarmonyOS官方合作社區】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
智能相機
+關注
關注
0文章
77瀏覽量
12671 -
開發板
+關注
關注
25文章
5082瀏覽量
97711 -
OpenHarmony
+關注
關注
25文章
3728瀏覽量
16405
原文標題:OpenHarmony開發樣例:智能相機
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
鴻蒙OpenHarmony【小型系統 燒錄】(基于Hi3516開發板)
![鴻蒙OpenHarmony【小型系統 燒錄】(基于<b class='flag-5'>Hi3516</b><b class='flag-5'>開發板</b>)](https://file1.elecfans.com/web2/M00/DF/10/wKgaomYt8OyAYdysAABTue69ngM008.jpg)
鴻蒙OpenHarmony南向:【Hi3516標準系統入門(命令行方式)】
![鴻蒙OpenHarmony南向:【<b class='flag-5'>Hi3516</b>標準系統入門(命令行方式)】](https://file1.elecfans.com/web2/M00/E1/C7/wKgZomY52MmAS66XAAADCp1_zEY399.jpg)
Hi3516開發板介紹
【燒錄指引】Hi3861、Hi3516、Hi3518 新手指引
【HarmonyOS HiSpark AI Camera試用連載 】Hi3516開發板燒錄方法
Hi3516開發板介紹
【OpenHarmony樣例】基于Hi3516開發板開發的智能油煙機
【OpenHarmony開發樣例】基于Hi3516開發板開發的智能貓眼
【鴻蒙系統學習筆記】Hi3516開發板燒錄總結
OpenHarmony3.0上編譯C控制Hi3516開發板的LED閃爍
![OpenHarmony3.0上編譯C控制<b class='flag-5'>Hi3516</b><b class='flag-5'>開發板</b>的LED閃爍](https://file.elecfans.com/web2/M00/16/43/poYBAGFSdHqAdrEfAAAG9H2ShCU055.png)
基于Hi3516開發板的智能貓眼設計
OpenHarmony鴻蒙南向開發案例:【智能貓眼(基于3516開發板)】
![OpenHarmony鴻蒙南向<b class='flag-5'>開發</b>案例:【<b class='flag-5'>智能</b>貓眼(基于<b class='flag-5'>3516</b><b class='flag-5'>開發板</b>)】](https://file1.elecfans.com/web2/M00/D1/4F/wKgaomYidIOAb5t-AASi2dMK2KA073.jpg)
鴻蒙OpenHarmony【小型系統編譯】 (基于Hi3516開發板)
![鴻蒙OpenHarmony【小型系統編譯】 (基于<b class='flag-5'>Hi3516</b><b class='flag-5'>開發板</b>)](https://file1.elecfans.com/web2/M00/C9/99/wKgaomYeL0WAZFDHAAACSiKnE8w930.jpg)
評論