1
概述
本Demo是基于Hi3516開發(fā)板,使用開源OpenHarmony3.0-LTS開發(fā)的應(yīng)用。通過獲取攝像頭數(shù)據(jù),實現(xiàn)預(yù)覽拍照以及路視頻等功能。并且通過后臺AI服務(wù)識別喚醒詞來進行語音控制拍照及錄視頻。
1. 應(yīng)用運行效果圖:
此為相機的預(yù)覽界面。
2. 智能相機使用示意圖
如上圖所示,用戶對著相機說對應(yīng)的喚醒詞,相機收集到對應(yīng)的音頻,經(jīng)過AI服務(wù)識別對應(yīng)的文字,最后傳到相機進行對應(yīng)的操作。
2
快速上手
1. 開發(fā)環(huán)境準(zhǔn)備
硬件準(zhǔn)備
-
預(yù)裝windows系統(tǒng)的PC機
-
Hi3516DV300 IoT Camera開發(fā)板
-
USB轉(zhuǎn)串口線、網(wǎng)線(Windows工作臺通過USB轉(zhuǎn)串口線、網(wǎng)線與Hi3516DV300 開發(fā)板連接)
Linux編譯服務(wù)器基礎(chǔ)環(huán)境準(zhǔn)備
開發(fā)基礎(chǔ)環(huán)境由windows 工作臺和Linux 編譯服務(wù)器組成。windows 工作臺可以通過samba 服務(wù)或ssh 方式訪問Linux編譯服務(wù)器。其中windows 工作臺用來燒錄和代碼編輯,Linux編譯服務(wù)器用來編譯OpenHarmony代碼,為了簡化步驟,Linux編譯服務(wù)器推薦安裝Ubuntu20.04。
安裝和配置Python
-
打開Linux終端。
-
輸入如下命令,查看python版本號,需要使用python3.7以上版本,否則參考 系統(tǒng)基礎(chǔ)環(huán)境搭建。
python3 --version
左右滑動查看全部內(nèi)容
-
安裝并升級Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
左右滑動查看全部內(nèi)容
安裝LLVM
-
下載LLVM工具。
-
解壓LLVM安裝包至~/llvm路徑下。
tar -zxvf llvm.tar -C ~/
左右滑動查看全部內(nèi)容
-
設(shè)置環(huán)境變量
vim ~/.bashrc
左右滑動查看全部內(nèi)容
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/llvm/bin:$PATH
左右滑動查看全部內(nèi)容
-
使環(huán)境變量生效
source ~/.bashrc
左右滑動查看全部內(nèi)容
安裝hb
運行如下命令安裝hb。
python3 -m pip install --user ohos-build
左右滑動查看全部內(nèi)容
設(shè)置環(huán)境變量
vim ~/.bashrc
左右滑動查看全部內(nèi)容
將以下命令拷貝到.bashrc文件的最后一行,保存并退出
export PATH=~/.local/bin:$PATH
左右滑動查看全部內(nèi)容
執(zhí)行如下命令更新環(huán)境變量
source ~/.bashrc
左右滑動查看全部內(nèi)容
執(zhí)行"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
左右滑動查看全部內(nèi)容
Hi3516開發(fā)環(huán)境準(zhǔn)備
將Linux shell改為bash,查看shell是否為bash,在終端運行如下命令
ls -l /bin/sh
左右滑動查看全部內(nèi)容
如果顯示為“/bin/sh -> bash”則為正常,否則請按以下方式修改:
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
左右滑動查看全部內(nèi)容
安裝編譯依賴基礎(chǔ)軟件(僅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
左右滑動查看全部內(nèi)容
安裝文件打包工具
打開Linux編譯服務(wù)器終端。運行如下命令,安裝dosfstools。
sudo apt-get install dosfstools
左右滑動查看全部內(nèi)容
運行如下命令,安裝mtool
sudo apt-get install mtools
左右滑動查看全部內(nèi)容
運行如下命令,安裝mtd-utils
sudo apt-get install mtd-utils
左右滑動查看全部內(nèi)容
安裝hc-gen
-
打開Linux編譯服務(wù)器終端。
-
下載hc-gen工具。
-
解壓hc-gen安裝包到Linux服務(wù)器~/hc-gen路徑下。
tar -xvf hc-gen-0.65-linux.tar -C ~/
左右滑動查看全部內(nèi)容
-
設(shè)置環(huán)境變量
vim ~/.bashrc
左右滑動查看全部內(nèi)容
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/hc-gen:$PATH
左右滑動查看全部內(nèi)容
-
使環(huán)境變量生效
source ~/.bashrc
左右滑動查看全部內(nèi)容
安裝Java 虛擬機環(huán)境
-
打開Linux編譯服務(wù)器終端
-
安裝Java運行時環(huán)境(JRE)
sudo apt-get install default-jre
左右滑動查看全部內(nèi)容
-
安裝Java sdk開發(fā)工具包
sudo apt-get install default-jdk
左右滑動查看全部內(nèi)容
PS:
java虛擬機是應(yīng)用簽名打包時才會用到的,SDK中默認(rèn)的3個系統(tǒng)應(yīng)用是需要簽名打包,所以需要安裝java虛擬機,沒有安裝的話,應(yīng)用簽名打包時會報如下錯誤:
如果不涉及到應(yīng)用的簽名打包,可以不用安裝此環(huán)境。
源碼下載&&編譯準(zhǔn)備
環(huán)境搭完后,就該準(zhǔn)備代碼了。
OpenHarmony源碼下載方法多種多樣,本文重點介紹linux + repo方式下載。
下載repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
左右滑動查看全部內(nèi)容
下載OpenHarmony源碼
#特別注意:請下載OpenHarmony 3.0 LTS 版本,后續(xù)會更新支持OpenHarmony其他版本
左右滑動查看全部內(nèi)容
下載智能相機代碼
具體倉庫地址: knowledge_demo_smart_home
通過git命令下載(方便后期代碼上傳管理,建議先將倉庫fork到自己賬號目錄,然后再下載):
git clone git@gitee.com:xxxxxxx/knowledge_demo_smart_home.git
其中xxxxxxx為fork后相關(guān)賬號名字。
左右滑動查看全部內(nèi)容
代碼拷貝
a. 在OpenHarmony的vendor目錄下新建一個team_x的目錄:
mkdir vendor/team_x
左右滑動查看全部內(nèi)容
b. 將下載的智能中控屏代碼的代碼拷貝到新建的team_x下面:
cp -rf ../knowledge_demo_smart_home/dev/team_x/smart_camera/ vendor/team_x/
左右滑動查看全部內(nèi)容
到此,代碼就準(zhǔn)備完成,可以進行編譯了。
2. 代碼編譯
代碼目錄結(jié)構(gòu)
在編譯代碼前,可以先了解一下代碼目錄結(jié)構(gòu),我們的demo主要包含2個部分,一個是相機(demo_cameraApp),負(fù)責(zé)相機相關(guān)功能,其次就是AI語音識別服務(wù)(demo_keyword_spotting),否則語音是采集以及識別。
demo_cameraApp 代碼目錄結(jié)構(gòu):
|—— BUILD.gn // 編譯腳本
|—— resources // 資源文件
|—— config.json // 安裝包所需要的json文件
|—— include
| |—— smart_camera_ability.h // 入口類的頭文件
| |—— smart_camera_ability_slice.h // 相機頁面類定義的頭文件
| |—— camera_manager.h // 相機功能封裝類的頭文件
| |—— event_listener.h // 監(jiān)聽事件類的頭文件
| |—— server_socket.h // socket 服務(wù)相關(guān)接口的頭文件
| |__ ui_config.h // 相機UI相關(guān)宏定義的頭文件
|
|__ src
|—— smart_camera_ability.cpp
|—— smart_camera_ability_slice.cpp // 相機頁面相關(guān)實現(xiàn)
|—— camera_manager.cpp // 相機功能封裝類的實現(xiàn)
|__ server_socket.c // socket 服務(wù)相關(guān)接口的實現(xiàn),主要用來接收ai識別后的結(jié)果
左右滑動查看全部內(nèi)容
demo_keyword_spotting 代碼目錄結(jié)構(gòu):
|—— BUILD.gn // 編譯腳本
|—— kws_app.cpp // 應(yīng)用入口
|—— kws_manager.cpp // 語音識別管理相關(guān)實現(xiàn)
|—— kws_manager.h // 語音識別管理頭文件
|—— audio_cache.cpp // 語音采集相關(guān)實現(xiàn)
|—— audio_cache.h // 語音采集頭文件
|—— client_socket.c // socket 服務(wù)相關(guān)接口的實現(xiàn),主要用來發(fā)送識別后的結(jié)果
|__ client_socket.h // socket 服務(wù)相關(guān)接口的頭文件
左右滑動查看全部內(nèi)容
特別說明:AI語音識別服務(wù)是一個后臺服務(wù)應(yīng)用,因此我們需要通過設(shè)置讓它自啟動,配置文件如下
vendor/team_x/smart_camera/init_configs/init_liteos_a_3516dv300.cfg
左右滑動查看全部內(nèi)容
具體修改步驟:
-
在services服務(wù)模塊最后添加以下代碼
"services" : [
.
.
.
{
"name" : "kws_app",
"path" : ["/bin/smart_kws_app"],
"uid" : 2,
"gid" : 2,
"once" : 0,
"importance" : 0,
"caps" : []
}
]
左右滑動查看全部內(nèi)容
在jobs模塊中找到"name" : "post-init",在"cmd"的最后加上”start kws_app“
{
"name" : "post-init",
"cmds" : [
.
.
.
"start kws_app"
]
}
左右滑動查看全部內(nèi)容
代碼編譯
源碼和環(huán)境準(zhǔn)備完后,接下來就是編譯,編譯涉及的指令有2條,hb set和hb build -f 。
hb set -- 設(shè)置工程目錄和選擇對應(yīng)的目標(biāo),通過鍵盤的上下鍵來選擇。
hb build -f -- 開始全量編譯。(hb build 為增量編譯)
編譯完后會生成對應(yīng)整個系統(tǒng)固件(u-boot-hi3516dv300.bin,OHOS_Image.bin,rootfs_vfat.img, userfs_vfat.img)以及我們應(yīng)用對應(yīng)的so文件。
其中u-boot-hi3516dv300.bin在device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/:
OHOS_Image.bin,rootfs_vfat.img,以及userfs_vfat.img在out目錄下:
對應(yīng)的libsmart_camera.so在out/hispark_taurus/smart_camera/usr/lib/ 目錄下:
AI服務(wù)可執(zhí)行程序在out/hispark_taurus/smart_camera/bin/ 目錄下:
以下表格為所有生成的固件及對應(yīng)的位置:
3. 固件燒錄
燒錄工具選擇
固件編譯完后,是需要燒錄到單板的。這里我們用的是HiTool工具燒錄的。(HiTool工具下載地址:HiHope官網(wǎng))
燒錄步驟
打開HiTool工具,如下圖:
燒寫步驟按照圖中標(biāo)注即可。點擊燒入后,燒錄工具會提示重新上電,此時重啟單板即可。
燒錄結(jié)果
燒錄成功后,會彈出如下提示,單板也會自行啟動。
燒錄失敗的話需要根據(jù)失敗提示查找一下原因。一般情況需要檢查一下串口是否連接正常,網(wǎng)線是否正確插入,IP是否選擇正常等。
查看IP的方法:當(dāng)單板上電后并正確插入網(wǎng)線后,點擊工具上刷新按鈕,此時單板IP會自動添加到服務(wù)器IP列表中。
IDE燒錄
另外,OpenHarmony官網(wǎng)有提供一種通過IDE來燒錄的,具體燒錄步驟請參考文檔:3516上快速運行Hello OHOS。
特別說明
如果是第一次燒錄程序的話,單板在啟動的時候需要設(shè)置bootargs,否則不能正常啟動。單板第一次啟動會停在hisilicon界面:
我們需要輸入以下指令:
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
左右滑動查看全部內(nèi)容
到此,燒錄已經(jīng)完成,設(shè)備也正常啟動。
4. 應(yīng)用安裝
打包應(yīng)用
本demo是以安裝包的形式安裝到系統(tǒng)中啟動運行的。因此,在安裝應(yīng)用前,需要將應(yīng)用打包成安裝包。
將編譯好的libsmart_camera.so文件與工程目錄下的res以及config.json文件通過壓縮打包成zip格式(三個文件直接壓縮,不能壓縮文件夾),并將后綴名改為hap(smart_camera.hap)。
掛載NFS
應(yīng)用打包后,我們是通過NFS方式將單板掛載到本地,通過相關(guān)的指令來安裝的,NFS掛載方法參照社區(qū)文章:Hi3516通過NFS掛載方式與Windows共享文件。
安裝
通過nfs是單板連接到本地電腦后,我們可以通過bm安裝指令進行安裝。bm 安裝工具在系統(tǒng)編譯完后會自動生成,路徑在:
out/hispark_taurus/smart_camera/dev_tools/bin/
左右滑動查看全部內(nèi)容
由于bm默認(rèn)安裝的應(yīng)用為已經(jīng)簽名的應(yīng)用,所以我們在安裝前需要先將簽名去掉。
bm set -s disable // 去簽名
bm install -p filename // 安裝應(yīng)用filename, filename需要指定路徑
左右滑動查看全部內(nèi)容
安裝完后桌面會顯示對應(yīng)應(yīng)用的ICON,直接點擊ICON即可以啟動相機的應(yīng)用。
5. 使用指南
由于本demo涉及到攝像頭的讀寫,故需要申請了相關(guān)的權(quán)限。在使用本demo前需要在setting中打開對應(yīng)的權(quán)限。具體操作:
-
點擊 setting-->應(yīng)用-->smart_camera,然后將所有權(quán)限打開。
-
本demo帶有相機的所有功能,包含預(yù)覽,拍照,錄像以及跳轉(zhuǎn)到圖庫查看對應(yīng)拍的圖片和錄制的視頻。
-
本demo最主要的功能是語音控制相機,需要對準(zhǔn)板子上的mic風(fēng)說喚醒詞,目前支持2個喚醒詞(Hi,xiaowen以及Nihao,wenwen),分別對應(yīng)控制相機的拍照以及錄像功能。
原文標(biāo)題:OpenHarmony開發(fā)樣例:智能相機
文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
智能相機
+關(guān)注
關(guān)注
0文章
77瀏覽量
12675 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5087瀏覽量
97792 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3730瀏覽量
16424
原文標(biāo)題:OpenHarmony開發(fā)樣例:智能相機
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論