React Native调用Android原生代码实现车牌识别功能【附效果图附源码】

HyperLPR3车牌识别-Android使用:SDK编译与部署 基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework. 安卓SDK使用说明 阅读详情

转载请注明出处,原文地址:http://blog.youkuaiyun.com/lucherr/article/details/71908180


        这段时间研究了下React Native,Facebook推出的,结合了Web应用和Native应用的优势,可以使用JavaScript来开发iOS和Android原生应用,决定简单研究下,于是开始搭建环境,编写HelloWorld,完成后又觉得HelloWorld过于简单(执行完命令你就拥有一个HelloWorld了),根本没有领会到RN在项目中的应用,刚好前段时间研究了车牌识别,所以决定把RN和车牌识别功能集成到一起折腾下,更深入的了解下RN。由于之前没有用过RN,在编写的过程中踩了很多坑,查资料的时候才发现原来好多人都踩过,如果你导入源码后不能直接运行,我只能告诉你这是正常的:)


注:本文主要专注于源码的大概介绍,讲的不是很详细,需要大家阅读源码体会,文末会给出源码地址,如果你想先体验一下效果,可以下载apk安装试试,文末也会给出下载地址。


这个demo也是站在巨人的肩膀上完成的,在此感谢以下网站/源码的作者,感谢他们的无私奉献和开源精神:

1.http://reactnative.cn 

        目前关于RN的资料已经有很多了,作者主要是在该网站上学习RN的,讲的很详细

2.https://github.com/liuruoze/EasyPR 

        基于openCV的中文车牌识别系统,运行在Windows系统上,详细介绍可以查看项目的Readme

3.https://github.com/linuxxx/EasyPR

        基于EasyPR移植的Android版本,本demo车牌识别部分就是基于该源码进行开发的,对拍照部分重新进行了开发,优化了照片的分辨率以及自动对焦功能,增加了车牌识别度。

4.其他相关资料的作者,有很多关于RN踩坑的:)  


准备工作:

      需要搭建好Android开发环境,准备好AS开发工具(Git环境可选)

    需要搭建好NDK开发环境

    需要搭建好RN开发环境

    然后就可以开干了

作者的主要开发环境如下:
System:              Ubuntu14.04   
Android Studio:     V2.3.1
Gradle:                  V2.14.1
NDK:                     android-ndk-r14b


(一)老规矩,先看下效果图(本来准备做动图的,原谅我太懒--!):

1.图片车牌号识别



2.真实车牌号识别,车牌号最后一位打码,你懂的(等红灯的时候也不忘测试,有没有很感动^ ^)



(二)源码目录简介

1.RN源码目录结构


由文件的时间可知demo其实是在四月份就编写的,为什么现在才发出来?原谅我太任性:)

如果你研究过RN的HelloWorld,对这个目录应该就没有疑问了,这是RN源码的根目录,通过react-native的init命令直接初始化来的(正常应该还有ios文件夹,我移除了)


2.Android原生代码目录结构


展开RN目录中android文件夹,这是原生代码的根目录,Android Studio结构的,也就意味着接下来是使用AS来开发原生源码

OpencvNative目录里存放着OpenCV相关的源码,该源码是在EasyPR_Android的jni部分引入的,EasyPR_Android都已经配置好了,你只需要有ndk编译环境就可以拥有



(三)导入方法简介

对源码的开发工作分两部分:

一是RN部分,这部分源码不需要导入AS,直接编辑后运行即可,作者使用vscode进行编辑。

二是Android原生代码部分,这部分源码可以导入AS后进行编辑和编译,方法同正常的AS项目。

导入成功后你看到的界面是这个样子的:



注:导入后需要修改ndk路径,在app/build.gradle里,把下面代码中两处红色字体部分的ndk路径修改为自己的路径:

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine "/home/lucher/main/softs/ndk/android-ndk-r14b/ndk-build",
            '-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source
            '-j', Runtime.runtime.availableProcessors(),
            'all',
            'NDK_DEBUG=0'
}

task cleanNative(type: Exec, description: 'Clean JNI object files') {
    commandLine "/home/lucher/main/softs/ndk/android-ndk-r14b/ndk-build",
            '-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source
            'clean'
}


(四)运行方法

完成了源码的导入工作后,就可以运行看看效果了,可以使用AS编译apk的方法打出apk后安装运行,也可以通过AS的运行功能直接运行,还可以通过RN提供的方法运行,在此列举如下两种方法:

方法一,通过AS运行:

下面所说的命令可以使用系统的Terminal执行,也可以使用AS的Terminal执行

1.如果是在真机上调试需要执行如下命令:

$ adb reverse tcp:8081 tcp:8081

否则运行后页面可能会出现:Could not get BatchedBridge,make sure your bundle is packaged correctly的错误

2.启动RN服务,执行如下命令(如果使用系统Terminal需要先cd到RN源码的根目录):

$ npm start

执行完这两个命令后就可以使用AS的Run命令来运行程序了,成功启动服务的结果如下:



方法二,通过RN运行:

该方法不依赖AS,使用系统Terminal执行,执行命令之前,需要先cd到RN源码根目录

1.启动RN相关服务

$ react-native start 

(react-native start和npm start都可以开启服务,具体有啥区别还没搞明白,有了解的还望赐教)

2.运行程序

$ react-native run-android

如果顺利,这时候程序就启动了,成功启动结果如下:



(五)那些年踩过的坑

在编写React Native的时候,遇到了各种各样的问题,当时记录了一些问题,可查看源码下readme.md中问题记录部分


由于对RN不是很了解,demo中某些实现方法不是很合理(例如获取扫描结果部分),如果要在实际项目中使用,有些地方还需优化,文中或源码中如果有错误还望指出。


源码较大,已上传至本人github:

https://github.com/lucher/EasyPR_Android_RN

想先体验效果的可以下载apk文件:

http://download.youkuaiyun.com/detail/lucherr/9841978

安卓Android、iOS移动端车牌识别OCR技术原理 核心内容:移动端车牌识别、安卓端车牌识别、Android车牌识别、iOS端车牌识别、OCR识别技术 一、安卓Android、iOS移动端车牌识别OCR技术识别流程 安卓Android、iOS移动端车牌识别是基于OCR识别的一用应用。安卓Android、iOS移动端车牌识别过程包括图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等一系列算法运算,其流程如下图所示: 其中 阅读详情

相关推荐

Android平台高效车牌识别库实战

通过本章内容的介绍,我们了解到特征提取在车牌识别系统中的核心地位。边缘检测、轮廓提取和字符分割是实现高质量特征提取的关键步骤。掌握这些方法,并能够灵活地将它们应用在实际车牌识别任务中,是提高车牌识别准确率和效率的重要途径。在下一章节中,我们将探讨字符识别算法,这是车牌识别流程中的另一个核心环节,对于识别系统的准确度和鲁棒性起着决定性的作用。在车牌识别中,模板匹配算法的关键步骤包括:将预处理后的图像进行字符分割,得到单个字符图像。对每个分割得到的字符图像,与模板库中的每个模板进行比较。

weixin_31776191的博客 1079

Android实现车牌识别(最新教程)

android自动识别车牌

学无止境 2287

Android车牌识别实战示例项目(可直接导入运行)

随着智能交通系统的快速发展,移动端车牌识别技术在停车管理、违章监控、车辆进出控制等场景中展现出巨大应用潜力。Android作为全球使用最广泛的移动操作系统之一,具备强大的硬件支持与开发灵活性,成为实现轻量级车牌识别的理想平台。本章将从整体架构出发,介绍Android车牌识别系统的基本组成模块,包括图像采集、预处理、区域定位、字符分割与识别等核心流程,并阐述其工作原理和技术挑战。同时,结合实际应用场景,分析该类系统对实时性、准确率和环境适应性的要求,为后续章节的理论推导与实践操作奠定基础。

weixin_28809949的博客 926

android 平台车牌识别的实现

在Android平台上实现车牌拍照与识别技术,确实是一个结合了图像处理、机器学习及OCR技术的复杂过程。

bbl168的博客 1054

Android车牌识别项目实战源代码分析:EasyPR_Android-master

在现代交通管理与监控系统中,车牌识别技术扮演着至关重要的角色。车牌识别通过自动识别车辆牌照号码,实现对车辆的管理和监控。随着移动设备的普及,尤其是Android平台的广泛使用,将车牌识别技术应用于Android平台变得尤为重要。计算机视觉是让机器能够“看见”的技术,它通过模拟人类的视觉感知功能,使计算机能够解释和理解视觉信息。计算机视觉的应用领域广泛,包括但不限于医疗成像、无人车驾驶、视频监控等。OCR技术通过图像预处理、特征提取、字符识别等步骤,实现图像文字的自动识别。

weixin_36328210的博客 1056

在android上的车牌识别

使用opencv的支持向量机提取车牌位置,使用多层感知机网络识别车牌字符,运行效果OK

基于EasyPR的车牌识别android实现

EasyPR4Android,基于EasyPR1.5beta的android实现 更新: 添加编译好的安装文件 采用android studio2.3.3大幅简化ndk开发的配置 mrcar 特性: 1.支持拍照和支持图库浏览识别 2.ndk调用OpenCV 3.从assets读取并复制文件 4.采用多线程进行识别处理 5.支持单击进行原图和识别结果之间的切换 采用android studio2.3.3开发实现,ndk版本为R12d,OpenCV版本为3.2,android SDK版本

迷若烟雨的专栏 2947

android平台的车牌识别

基于openCV的车牌检测结合深度学习进行车牌识别,支持蓝色、黄色、新能源车牌

智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》

这是项目《智能驾驶 车牌检测和识别》系列之《Android实现车牌检测和识别(可实时车牌识别)》;本项目将开发一个Android版本的车牌检测和识别APP;Android车牌检测,Android车牌识别,Android车牌检测和识别

AI吃大瓜的博客 5861

android平台的车牌识别so库

支持车牌的实时识别,支持蓝色、黄色、绿色新能源等车牌,识别耗时比较短,大概单个车牌是180ms,识别率比较高

基于Java语言的hyperlpr3安卓车牌识别SDK设计源码

本项目是一款基于Java语言的Android车牌识别SDK设计源码,共包含71个文件,其中XML配置文件16个,Java源文件15个,WebP图片文件10个,MNN模型文件6个,Git忽略文件4个,Gradle构建文件4个,Markdown文件2个,属性文件2个,SO库文件2个。该SDK专注于Android平台的车牌识别功能,适用于各种移动设备。

Android tess-two车牌识别

Android tess-two车牌识别 案例下载github地址 image.png 一、下载 1.tess-two源码下载链接 因为Tesseract使用C++实现的,在Android中不能直接使用,需要封装JavaAPI才能在Android平台中进行调用,这里我们直接使用TessTwo项目,tess-two是TesseraToolsForAndroid的一个gi...

jgw2008的专栏 906

React 实现车牌键盘的示例代码

主要介绍了React 实现车牌键盘的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

android端使用openCV与深度学习实现车牌识别

车牌识别的应用场景随处可见:高速公路上超速抓拍、小区门口关卡、车库入口关卡,甚至出现在车载设备上。它的工作原理大致这样:使用摄像头充当“眼睛”,使用openCV与深度学习充当“大脑”。实时车牌识别工作步骤:摄像头抓拍—>openCV初步定位车牌位置—>二次确认车牌位置的左右上下边界—>车牌倾斜校正—>车牌字符切割—>车牌字符识别。其中,车牌检测是车牌识......

徐福记456 4万+

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

ImageNet分类实战:用PyTorch复现AlexNet的5个关键技巧(附代码)

本文详细介绍了使用PyTorch复现经典AlexNet模型进行ImageNet图像分类的五个关键工程技巧。内容涵盖模型架构的现代重构、训练策略优化、核心组件实现与替代方案,以及实用的训练调试方法,并提供了完整的代码示例,帮助开发者深入理解深度卷积神经网络的实现细节与优化思路。

i0j1k2l3m的博客 94

Android车牌识别开发流程

移动端车牌识别,Android车牌识别

bbl168的博客 963

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

Robot_PLC_HMI_Automation 6100

车牌识别准确率99%!一套完整的开源车牌识别解决方案,支持Android、Java等主流开发平台

Plate-R是一款基于深度学习的高性能、高精度开源车牌识别系统,支持从车牌检测到字符分割与识别的完整流程,准确率高达99%+。系统默认支持识别大陆车牌、港澳车牌、台湾车牌等12类车牌,支持移植嵌入式和安卓端快速集成使用,可广泛应用于智能停车、道路监控、门禁系统等车牌自动识别场景。毫秒级识别速度,支持批量处理和实时视频流识别支持Android、UniApp、Java、Python等多种开发平台,支持Linux/Win/Centos/Ubuntu下CPU、GPU部署运行,满足不同场景需求。

1866

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3161

【STK】手把手教你利用STK进行覆盖分析05-方位覆盖分析、覆盖网络检查工具和单对象覆盖分析

这一篇是我们STK覆盖模块的理论部分的最后一篇文章,之后会找尽可能多的论文来复现论文中关于STK覆盖模块的仿真的部分,到时候大家遇到不会的就可以结合前面的理论部分来看。

weixin_44184852的博客 1493

android中车牌识别技术

代码参考至github上面的EasyPR_Android的源码,感谢为开源付出贡献的程序猿 源码地址 :https://github.com/linuxxx/EasyPR_Android使用步骤: 1、下载源码到本地,使用AndroidStudio打开,直接运行可能会有错误,我在开发时出现了找不到ndk-build文件,不是代码不能够运行,而是在build.gradle中没有配置完整,大家找到

chenchuanwen111的博客 4089

深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战

深度学习多变量时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战 注意参考:深度学习多变量时间序列预测:GRU算法构建单变量时间序列预测模型+代码实战 GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。 GRU和LSTM在很多情况下实际表现上相差无几,那么为什么我们要使用新人GRU(.

data+scenario+science+insight 4033

Android扫描车牌,车牌拍照识别SDK

Android扫描车牌,车牌拍照识别SDK   Android扫描车牌,车牌拍照识别SDK开发包是移动平台的车牌识别应用程序,支持Android等多种主流移动操作系统。该产品采用手机、平板电脑摄像头拍摄汽车牌照图像,然后通过OCR软件对车牌颜色、车牌号进行识别。   Android扫描车牌,车牌拍照识别特色   整牌识别率高,尤其汉字识别遥遥领先同类产品;   支持牌照全,包括蓝牌、黄牌(

jinweiyi_tse的博客 2645

【Kubernetes】怎么根据pod找到关联的deployment呢

在文章中我们删除pod需要删除deployment,那么怎么根据pod找到关联的deployment呢。

九师兄 505

Python接入企业微信群机器人图文教程,实现恐贪指标自动触发微信消息提醒功能!Python 企业微信 群机器人 消息提醒 Webhook 企业微信接口

✅ 企业微信群机器人的添加方式;✅ 如何获取 Webhook 地址;✅ Python 如何用 requests 发消息;✅ 如何在实际业务中触发自动提醒;这种方式不仅适合个人开发者、测试人员,也适用于小团队、运维通知等场景,部署简单、触发灵活、响应及时!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 915
上一篇: Android Studio在同一个窗口中打开多个Project【附效果图附源码】
下一篇: Android Studio使用Gradle实现自动打包,签名,自定义apk文件名,多渠道打包,集成系统签名证书【附效果图附源码】
lucherr
博客等级 码龄15年 162粉丝 48原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值