移动端车牌识别OCR-结合OpenCV

本文介绍了如何在Android应用中实现本地车牌识别功能,避免使用第三方SDK并解决网络延迟和调用次数限制问题。通过集成OpenCV和HyperLPR库,实现了高识别率的车牌识别,详细讲述了从下载OpenCV到配置NDK,再到编写识别代码的全过程,适合开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

最近产品那边说APP上要加个车牌识别的功能,用户不用手动输入,我说没问题啊加就加呗。脑子中第一反应就是第三方SDK,最终用了百度车牌识别SDK,完成了需求,集成方法详见“百度SDK文档”,好了文章到这里在可以结束了。 文章要是真结束了,提刀的兄弟估计又要砍我了,标题党一个,老是做这些脱裤子放屁的事情,哈哈~~~。皮一下很开心。

问题

一开始我们确实用的百度车牌识别,但是识别率不是太高,而且车牌图片要上传到百度那边去,也会受网速影响,最重要的是,百度每天只能调用200次,多于200次要掏钱的,产品那边就说,能不能做成本地识别, 能啊,肯定可以啊,但是我还是个算法小白,怎么搞这个识别算法嘛,最后找了几个识别平台,某泊车平台,开口就要了八万,他们说还有另一种授权方式接入,一台机器400块,20台起售。虽说贵了点,但是识别率确实可以,我倒是想直接接过来,多省事了,但是公司肯定不想掏这个钱的啊,最后还是让开发想办法 。最苦逼的还是开发~~~~。

找方法

在百度上找了一大圈,大多数都是识别平台的广吿,也有几个说到了识别,但是说的比较模糊,还不提供源码,有的只是打着识别名号赚积分,所以我写文章的时候,只会写一些很实用的,真正能帮到大家的东西,废话不多说了,直奔主题,最后找到了两个识别的库:

一,EasyPR EasyPR github上 star 有五千多个了,但是由于长期没有更新了,新能源车牌,也不支持,所以没有使用这个库。

二, HyperLPR
HyperLPR 作者现在还在维护着,不止Android还支持其他平台的识别,最终选择了这个 ,但是作者关于Android方面的文档写的不是太多,以致于在集成过程中会遇到很多问题。下面我们一步一步来做。

实现

一,下载OpenCV : OpenCV官网:opencv.org/ OpenCV Android 3.4.6 版本 下载地址:nchc.dl.sourceforge.net/project/ope… 用3.4.6版本的,直接打开链接可下载,下载过程有点慢,没办法,多等会吧,我也是下了好长时间的。下载完解压。

二,新建项目,依赖OpenCV 在AS新建一个新项目名字随便取啦,然后在 APP 上右键 New-----> Module 在弹窗里选择 Import Eclipse ADT Project 点Next 。 选择你刚才解压的OpenCV目录下的 sdk/java 目录 点击 OK ,然后填下 Module Name ,我填的 “openCV” 然后 点Next -----> Finish。

接下来项目会报错的,打开 刚导入 的OpenCV 的 AndroidManifest.xml 删除 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> 这行代码。

再打开 OpenCV 的 build.gradle 文件,把版本改成和APP 的build.gradle 文件想同的版本,如下:

在APP 的 build.gradle 加入 implementation project(path: ':openCV') 这行代码 OK,现在同步下项目。 还要添加 SO 文件, 在App 的 buidl.gradle 中 defaultConfig 下加入

 ndk   {
            //选择要添加的对应 cpu 类型的 .so 库。
            abiFilters 'armeabi-v7a'
            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

在main下新建jinLibs 目录 ,把OpenCV SDK 的解压目录下 sdk/native/libs/armeabi-v7a 目录拷到 jniLibs 下 好了OpenCV 现在完成了,检验下是否可用。

在MainActivity中的代码:

public class MainActivity extends AppCompatActivity {

    private final String TAG = getClass().getSimpleName();

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值