生成dlib-android庫(kù)(libandroid-dlib.so)

dlib作者已經(jīng)把dlib移植到Android平臺(tái),本文介紹在CentOS上生成dlib Android動(dòng)態(tài)庫(kù)的方法,當(dāng)作備忘。

為了生成dlib-android動(dòng)態(tài)庫(kù),只要執(zhí)行build.py即可。build.py需要以下支持:

1.Android NDK

2.a(chǎn)db

3.dlib-android源碼

4.OpenCV SDK



1.安裝Android NDK

dlib以及第三方代碼都是用native實(shí)現(xiàn)的,顯然,我們需要準(zhǔn)備好NDK。

下載android-ndk-r16b-linux-x86_64.zip

然后解壓到用戶的一個(gè)文件夾里:

$mkdir –p android

$cd android

$unzip android-ndk-r16b-linux-x86_64.zip

修改~/.bashrc,把NDK路徑加入到PATH里

export ANDROID_NDK_HOME=/home/samson/android/android-ndk-r16b

export PATH=$PATH:$ANDROID_NDK_HOME

Android NDK已經(jīng)準(zhǔn)備就緒。


2.安裝adb

(注:如果屏蔽build.py中的setDeviceABI(),這一步可以省略)

dlib-android 的build.py里setDeviceABI()需要啟動(dòng)adb以獲得設(shè)備CPU的ABI類型,所以必須先安裝adb。adb在sdk tools里,先下載:

https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip

然后安裝platform-tools:

$sudo mkdir -p? /usr/local/share/android

$sudo unzip sdk-tools-linux-3859397.zip?-d /usr/local/share/android

$cd? /usr/local/share/android

$sudo yes | ./tools/bin/sdkmanager --licenses? #若遇到有關(guān)repositories.cfg的警告,忽略它,或創(chuàng)建一個(gè)空的repositories.cfg即可

$sudo ./tools/bin/sdkmanager "tools" "platform-tools"

修改~/.bash_profile,把platform-tools路徑加入到PATH里:

PATH=$PATH: /usr/local/share/android/sdk/platform-tools

lsusb命令查看USB id.

lsusb集成在usbutils里,安裝usbutils后就可以執(zhí)行l(wèi)susb指令了

$sudo yum install usbutils

$lsusb

? Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub

Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

? 接入一個(gè)Android設(shè)備后,

$lsusb

Bus 001 Device 003: ID 22d9:2774

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub

Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

新增加的“Device 003: ID 22d9:2774”就是android設(shè)備

在/etc/udev/rules.d/50-android.rules中

$sudo touch /etc/udev/rules.d/50-android.rules

并寫入內(nèi)容

SUBSYSTEM=="usb", SYSFS{""}=="22d9:2774", MODE="0666"

注意用真實(shí)的id替換文中的"22d9:2774"

重啟udev服務(wù):

$sudo start_udev

$sudo systemctl restart system-udev-trigger.service

至此,adb安裝完成,驗(yàn)證一下:

$adb version

Android Debug Bridge version 1.0.39

Version 0.0.1-4500957

Installed as /usr/local/share/android/sdk/platform-tools/adb

這一步稍有些麻煩。但是一步步做,也很容易。


3.準(zhǔn)備dlib-android源碼

$cd ~/android

$git clone https://github.com/tzutalin/dlib-android.git

$cd dlib-android


4.準(zhǔn)備OpenCV

實(shí)際上,執(zhí)行envsetup,就能下載并解壓好OpenCV。手動(dòng)準(zhǔn)備OpenCV就可以選擇專業(yè)的工具加快下載速度;另外,envsetup固定下載3.1.0版本。

下載好最新版OpenCV,opencv-3.4.1-android-sdk.zip,并解壓到dlib-android/third_party:

$unzip opencv-3.4.1-android-sdk.zip

創(chuàng)建symbolic link供build.py使用:

$ln –s ~/android/dlib-android/third_party/OpenCV-android-sdk/sdk/native ~/android/dlib-android/third_party/opencv


5.生成Andorid動(dòng)態(tài)庫(kù)

$python build.py

幾分鐘后,dlib-android/libs文件夾里就生成4個(gè)子文件夾,每個(gè)子文件夾里都有一個(gè)libandroid_dlib.so作為對(duì)應(yīng)ABI類型的動(dòng)態(tài)庫(kù)。

也可以修改dlib-android/jni/Application.mk定義的APP_ABI,只生成你需要的庫(kù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容