做宣传可以在哪些网站上发布,wordpress 局域网,装修案例app哪个最好,wordpress淘宝客模板图片文章目录 1 准备Android项目文件1.1 解压文件1.2 放置ncnn模型文件1.3 放置ncnn和opencv的android文件1.4 修改CMakeLists.txt文件 2 手机连接电脑并编译软件2.1 编译软件2.2 更新配置及布局2.3 编译2.4 连接手机 3 自己数据集训练模型的部署4 参考 1 准备Android项目文件
1.1… 文章目录 1 准备Android项目文件1.1 解压文件1.2 放置ncnn模型文件1.3 放置ncnn和opencv的android文件1.4 修改CMakeLists.txt文件 2 手机连接电脑并编译软件2.1 编译软件2.2 更新配置及布局2.3 编译2.4 连接手机 3 自己数据集训练模型的部署4 参考 1 准备Android项目文件
1.1 解压文件
下载项目文件ncnn-android-yolov8-seg.zip并解压。 1.2 放置ncnn模型文件
ncnn-android-yolov8-seg\app\src\main\assets中放入ncnn文件(即模型 的param和bin文件)
修改param和bin文件名为yolov8n-seg.paramyolov8-seg.bin, yolov8sseg.param, yolov8s-seg.bin 1.3 放置ncnn和opencv的android文件
(1) 放置ncnn的安卓文件
https://github.com/Tencent/ncnn/releases
下载ncnn-YYYYMMDD-android-vulkan.zip
我们使用ncnn-20230223-android-vulkan.zip
解压ncnn-YYYYMMDD-android-vulkan.zip后
放置到app/src/main/jni 并修改app/src/main/jni/CMakeLists.txt中的ncnn_DIR
(2) 放置opencv的安卓文件
https://github.com/nihui/opencv-mobile
下载opencv-mobile-XYZ-android.zip
我们使用opencv-mobile-4.6.0-android.zip
解压opencv-mobile-XYZ-android.zip后放置到app/src/main/jni并修改 app/src/main/jni/CMakeLists.txt中的 OpenCV_DIR 1.4 修改CMakeLists.txt文件
ncnn-android-yolov8-seg\app\src\main\jni下面
project(yolov8ncnn)cmake_minimum_required(VERSION 3.10)set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.6.0-android/sdk/native/jni)
find_package(OpenCV REQUIRED core imgproc)set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20230223-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)
find_package(ncnn REQUIRED)add_library(yolov8ncnn SHARED yolov8ncnn.cpp yolo.cpp ndkcamera.cpp)target_link_libraries(yolov8ncnn ncnn ${OpenCV_LIBS} camera2ndk mediandk)2 手机连接电脑并编译软件
任意投屏软件即可 以小米10手机为例
(1)设置开发者模式 设置-我的设备-全部参数 点击MIUI版本三次
(2)设置USB调试和安装 设置-更多设置-开发者选项 打开USB调试USB安装
(3)手机通过USB数据线或WiFi连接电脑
(4编译和调试 打开已经存在的项目选择build.gradle
(5导出签名apk Build-Generate Signed APK
2.1 编译软件
build,gradle(project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {google()mavenCentral() // 替换 jcenter}dependencies {classpath com.android.tools.build:gradle:7.2.2 // 更新到兼容版本}
}allprojects {repositories {google()mavenCentral() // 替换 jcenter}
}build,gradle(app)
apply plugin: com.android.applicationandroid {// 使用较新的编译版本compileSdkVersion 33 // 更新到最新的 SDK 版本// buildToolsVersion 可省略Gradle 会自动选择defaultConfig {applicationId com.tencent.yolov8ncnnarchivesBaseName $applicationIdminSdkVersion 24 // 保持最低支持 SDK 版本targetSdkVersion 33 // 确保与最新规范兼容}externalNativeBuild {cmake {version 3.10.2 // 保持当前的 CMake 版本path file(src/main/jni/CMakeLists.txt) // 指定 CMake 文件路径}}// 使用较新的 AndroidX 库dependencies {implementation androidx.core:core:1.9.0implementation androidx.appcompat:appcompat:1.5.1}// 指定 NDK 版本ndkVersion 24.0.8215888
}gradle.properties
## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize256m
# org.gradle.jvmargs-Xmx2048m -XX:MaxPermSize512m -XX:HeapDumpOnOutOfMemoryError -Dfile.encodingUTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.paralleltrue
#Tue Nov 19 12:54:21 CST 2024
systemProp.http.proxyHost
systemProp.http.proxyPort80
android.useAndroidXtrue
android.enableJetifiertrue
gradle-wrapper.properties
distributionBaseGRADLE_USER_HOME
distributionPathwrapper/dists
distributionUrlhttps\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBaseGRADLE_USER_HOME
zipStorePathwrapper/distslocal.properties
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Nov 19 11:53:56 CST 2024
sdk.dirD\:\\software_code\\android\\sdk
cmake.dirD\:\\software_code\\android\\sdk\\cmake\\3.10.2.4988404settings.gradle
include :app2.2 更新配置及布局
升级gradle 修改AndroidManifest.xml
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.tencent.yolov8ncnnandroid:versionCode1android:versionName1.1!-- 权限声明 --uses-permission android:nameandroid.permission.CAMERA /uses-feature android:nameandroid.hardware.camera2.full /!-- 应用声明 --application android:labelstring/app_name!-- 活动声明 --activityandroid:nameMainActivityandroid:labelstring/app_nameandroid:screenOrientationportraitandroid:exportedtrue!-- 意图过滤器 --intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application
/manifest在com.tencent.yolov8ncnn.MainActivity重新import
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;2.3 编译 2.4 连接手机
我当前使用usb进行连接 点击run在手机安装后并获取权限 结果如图
3 自己数据集训练模型的部署
1使用YOLOv8模型训练自己的数据集
2ncnn模型文件的替换
3修改yolo.cpp文件中的class_names yolo.cpp文件generate_proposals函数中
const int num_class 80;改为自己数据集中的类别数
4 参考
https://github.com/Tencent/ncnn
https://github.com/nihui/opencv-mobile
https://github.com/FeiGeChuanShu/ncnn-android-yolov8