NCNN官方例子操作流程

2021-10-05  本文已影响0人  一个摸鱼AI喵

NCNN官方:

Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform (github.com)

官方例子

1.安装Android Studio

默认安装,修改地址到D盘,若遇到unable to access android sdk add-on list 点击cancel默认安装即可

1.1打开Android Studio,下载相关包

File-setting-Appearance&Behavior-System Setting-Android SDK

Android SDK Locations地址先修改

image-20210611173454493.png

注:如果一开始忘记修改地址,已经下载包后更改地址方法如下:

[图片上传中...(image-20210611173454493.png-cc7d5b-1633485004027-0)]

SDK Platforms选择:

SDK tools选择:

image-20210611173204674.png

然后勾上Show Package Details

2.下载官方例子

git clone https://github.com/nihui/ncnn-android-scrfd

3.查看app/src/main/jni/CMakeLists.txt

project(scrfdncnn)

cmake_minimum_required(VERSION 3.10)

set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.5.1-android/sdk/native/jni)
find_package(OpenCV REQUIRED core imgproc)

set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20210525-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)
find_package(ncnn REQUIRED)

add_library(scrfdncnn SHARED scrfdncnn.cpp scrfd.cpp ndkcamera.cpp)

target_link_libraries(scrfdncnn ncnn ${OpenCV_LIBS} camera2ndk mediandk)

官方配置:

如果没有此文件,自己创建:

cd app && mkdir build
cd build && cmake ..

4.下载ncnn-android-vulkan.zip

根据CMakeLists.txt,下载ncnn-20210525-android-vulkan

下载地址为:https://github.com/Tencent/ncnn/releases

编译版本,默认配置,android-ndk-r21d,xcode 12.2,ubuntu-16.04,ubuntu-18.04,ubuntu-20.04,vs2017,vs2019

5.下载opencv-mobile-XYZ-android.zip

根据CMakeLists.txt,下载opencv-mobile-4.5.1-android

下载地址为:https://github.com/nihui/opencv-mobile

可下载其他版本,但CMakeLists.txt的配置信息需要更改,

注意:(armeabi-v7a, arm64-v8a, x86, x86_64) build with ndk r21d and android api 24,即在build.gradle文件中设置minSdkVersion 不能小于24.即设备安卓系统必须7以上, 安卓6不能使用.

6.用andriod Studio打开项目

6.1 File-Sync Project with Gradle Files 进行文件检查

6.2文件检查没问题,Build-Make Project,生成项目

6.2- 如果只编译C++代码

image-20210801164153193.png

在2020.3的版本为:

image-20210801231636112.png

6.3Run - run app

下拉,选择Open AVD manager,选择Create Virtual Device,选择分辨率跟安卓版本,

image-20210611174752826.png image-20210611175011432.png

如果模拟器,需要用到摄像头,在Android Virtual Device Manager选择对应的模拟器,修改-Show Advanced Settings-Camera,Front与Back都选择Webcam0,即电脑的摄像头.

image-20210611184344702.png

7.app命名

直接在文件AndroidManifest.xml中的android:label=”@string/app_name”去修改即可,直接去修改app_name中的名字,中、英文都是可以的;

img

注意:项目的versionName、versionCode若需要修改,可以直接去build.gradle中去修改,然后重新编译即可,不要去清单文件AnddroidManifest.xml中修改,因为那样是没有任何作用的。

8.app图标

AndroidMenifest.xml中指定了该APP的图标:android:icon="@mipmap/ic_launcher"

img

mipmap/ic_launcher”对应了“应用程序名/app/src/main/res”中的多个以“mipmap”开头的文件夹,如图

img

2.1 hdpi、mdpi、xhdpi、xxhdpi和xxxhdpi的区别 以上五个文件夹对应了不同屏幕密度下使用的图标。屏幕密度简称DPI,其全称为“Dots Per Inch”,表示“每英寸的像素点”,该值越大显示的图标则越清晰。

anydpi-v26 待整理;

hdpi表示屏幕密度是160;

hdpi表示屏幕密度是240;

xhdpi表示屏幕密度是320;

xxhdpi表示屏幕密度是480;

xxxhdpi表示屏幕密度是640。

不同文件夹下,保存了不同屏幕密度的图标;可以通过两种方式修改APP的图标,一种是修改图标资源;另一种是修改图标资源值。

2.2 通过修改 (图标资源)实现图标的修改 将APP的新图标名修改为“ic_launcher.png”,之后将其拷贝到“1.1 hdpi、mdpi、xhdpi、xxhdpi和xxxhdpi的区别”中提到的5个文件夹中,覆盖之前的“ic_launcher.png”文件,之后运行程序即可实现APP图标的修改。

<实际操作没效果>

2.3 通过修改 (图标资源值) 实现图标的修改 在“1 修改APP图标”中提到的AndroidMenifest.xml中的“android:icon”指定的是APP图标资源,可以将其修改为其它值。例如,将APP新图标拷贝到drawable文件夹下,并将AndroidMenifest.xml修改

android:icon="@drawable/ic_launcher"

<实际操作有效>

2.4 修改anydpi-v26 待整理;

9.build.gradle设置

compileSdkVersion: 编译版本,真正决定代码是否能编译的关键,比如设置成23,就无法使用httpclient,低版本编译出来的apk可以在高版本上运行,因为向下兼容,高版本编译的apk运行到低版本,minSdkVersion的也没有问题,因为编译时就会考虑兼容性,低版本会有v4,v7这些兼容包

minSdkVersion: 最小支持版本,比如设置成15,就无法在低于15的版本运行

targetSdkVersion: 只是一个标示,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些,编译阶段没有实质性作用

buildToolsVersion: 编译工具的版本,一般设置为最新即可

兼容包得版本一般要配置跟编译版本一致,比如编译版本配置为23,v7兼容包也要配置为23,否则会出错

cmake设置

 externalNativeBuild {
         cmake {
//            cppFlags ""
            cppFlags "-std=c++11 -frtti -fexceptions"  //设置标准跟是否支持try跟exceptions
            arguments "-DANDROID_STL=c++_static"  //支持STL静态库 ,默认
//          arguments "-DANDROID_STL=c++_shared"  //支持STL动态库
            }
        }

ndk编译版本设置

为生成的so文件支持平台.会存放在不同平台文件夹中

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']   //寻找库文件地址添加进library
        }
    }
上一篇下一篇

猜你喜欢

热点阅读