Android调用HyperLPR实现车牌识别

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

前言:

车牌识别部分当前比较火的库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去写或者其他可以获取图片的流媒体去搞。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiwolf_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值