前言:
车牌识别部分当前比较火的库HyperLPR-HyperLPR/Prj-Android at master · szad670401/HyperLPR · GitHub
这个库看到一直更新到最近,star数量也非常多。所以我们毫不犹豫的选择了它。当前文件只作为记录我学习的技术所用,以方便后面能快速拾起到实际场景中
前提条件:
1,Android Studio已安装好
2,OpenCV的依赖库安装好Android Studio arctic Fox(北极狐)导入openCV_tiwolf_li的博客-CSDN博客
3,下载HyperLPR-master,解压好
4,下载好的opencv-3.4.6-android-sdk.zip,解压好
开始动工:
我这是直接使用opencv346依赖库,依照这导入的opencv工程继续搞
1,创建一个新的module,我这命名为carrecognise,然后将HyperLPR-master\Prj-Android\app\src\main下的文件依次复制到carrecognise下,如图


修改AndroidManifest.xml文件,如果图快。可以直接替换之前的。然后将包名改成自己的。然后再将对应的CMakeLists.txt和对应的res文件下的layout和values部分替换下。
将opencv-3.4.6-android-sdk\OpenCV-android-sdk\sdk\native里面的东西,替换掉opencv342/sdk/native下面的文件。如图
修改build.gradle.修改过程中有可能出现以下错误
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':carrecognise'.
> Key GNUSTL_STATIC is missing in the map.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
一些NDK版本导致的问题。直接按照这篇文章解决即可最新实用下载配置旧版本NDK方法(Key GNUSTL_STATIC is missing in the map)_shunsix的博客-CSDN博客
sdkTool上面的cmake也要安装,不然也会出现问题。
这是我的build.gradle
plugins {
id 'com.android.application'
}
android {
compileSdk 29
defaultConfig {
applicationId "xxxx.xxx.carrecognise"
minSdk 22
targetSdk 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
// cppFlags "-std=c++11 -frtti -fexceptions"
// abiFilters 'armeabi-v7a'
arguments '-DANDROID_STL=gnustl_static'
// arguments '-DANDROID_STL=gnustl_shared'
// '-DANDROID_ABI=armeabi-v7a'
}
}
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
// abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
abiFilters 'armeabi-v7a',"arm64-v8a"
}
ndkVersion "17.2.4988734"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
sourceSets.main {
jni.srcDirs = [] // This prevents the auto generation of Android.mk
jniLibs.srcDirs = ['libs','src/main/cpp/opencv342/sdk/native/libs']
//jniLibs.srcDirs =['src/main/libs','src/main/jniLibs']
}
/* externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}*/
externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
api 'com.github.bumptech.glide:glide:3.8.0'
implementation 'org.greenrobot:eventbus:3.0.0'
implementation project(':opencv346')
}
在此过程中,还会有些其他问题。不过都是一些引入包不对的小问题了。
最后,烧录程序进入设备。得到

实时视频部分,使用它的代码是获取不到摄像头的。所以需要使用另外的camera2去写或者其他可以获取图片的流媒体去搞。
Android集成HyperLPR实现车牌识别

这篇博客记录了在Android Studio中集成HyperLPR库进行车牌识别的过程,包括前提条件(Android Studio安装,OpenCV依赖库配置)和具体步骤(创建新module,复制源码,修改配置文件等)。虽然在导入和配置过程中遇到一些问题,如NDK版本和CMakeLists冲突,但通过查阅资料和调整解决了这些问题。最后指出,HyperLPR的实时视频部分需要结合其他库(如camera2)来获取摄像头数据。
4936

被折叠的 条评论
为什么被折叠?



