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万+

工业场景实战:基于YOLO与多格式标注的传送带异物检测数据集构建指南

本文详细介绍了基于YOLO与多格式标注的传送带异物检测数据集构建方法,涵盖数据采集、标注技巧(YOLO、COCO、VOC格式)、数据增强策略及实战案例。通过工业级解决方案,有效提升异物检测准确率与效率,适用于各类工业场景。

weixin_29168393的博客 464

从零开始搭建GD32F103CBT6开发环境:VSCode配置与实战技巧

本文详细介绍了如何从零开始为国产MCU GD32F103CBT6搭建高效的VSCode开发环境。内容涵盖工具链安装、VSCode核心插件配置、工程目录结构规划、关键配置文件编写以及Makefile实战,旨在帮助开发者摆脱传统IDE束缚,利用现代化工具链提升嵌入式开发效率。

weixin_29158413的博客 448

Android车牌识别开发流程

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

bbl168的博客 963

[Arcgis插件分享]--在线地图、地图配色

插件介绍:MapOnline在线地图插件是一套由北京茗禾科技有限公司研发的基于ArcGIS的插件工具,用户通过注册“数据禾”网站,即可使用MapOnline实现各种在线地图资源的集成加载,以及网站共享资源的免费下载。包括:谷歌地图、谷歌地球(无偏)、高德地图、天地图(无偏)、搜搜地图、必应地图(无偏)、OSM地图(无偏)、Esri影像(无偏),以及自定义切片的加载。⑤在Arcmap操作窗口上方的菜单栏右键,调用「MapOnlinev1.2.4」②双击安装文件夹内的「MapOnline.esriAddIn」

weixin_59101151的博客 5767

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

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

1866

从半导体物理到实战:手把手教你测量MOS管体二极管的Vf和Trr

本文深入探讨了MOSFET体二极管的关键参数测量方法,重点讲解了正向压降(Vf)和反向恢复时间(Trr)的测量原理与实战步骤。通过搭建测试平台,使用万用表和示波器等工具,手把手指导如何量化这些影响开关损耗和效率的核心参数,并对比分析了硅基与碳化硅(SiC)器件在体二极管性能上的显著差异。

n7o8p的博客 341

SenseVoice 实测,阿里开源语音大模型,识别效果和效率优于 Whisper,居然还能检测掌声、笑声!5分钟带你部署体验

阿里开源语音大模型:语音识别效果和性能强于 Whisper,还能检测掌声、笑声、咳嗽等

u010522887的专栏 4万+

android中车牌识别技术

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

chenchuanwen111的博客 4089

2025.06.06【Ribo-seq】|riboWaltz:P-site定位与三碱基周期性分析流程

同学们,大家好!今天我们要学习的是riboWaltz——一款专为Ribo-seq(核糖体足迹测序)数据设计的R包,主要用于P-site定位优化和三碱基周期性分析。P-site的准确定位是Ribo-seq下游所有翻译组学分析的基础,riboWaltz为我们提供了系统、可视化、易用的解决方案。P-site定位优化:自动识别不同长度RPF的最佳P-site偏移量。三碱基周期性分析:可视化RPF在CDS、UTR等区域的分布,评估数据质量。多样本/多条件支持:可同时处理多个样本,便于批量分析和对比。

1794

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

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

jinweiyi_tse的博客 2645

基于STM32姿态解算-正点原子ATK-IMU901模块标准库开发——正点原子串口角度传感器模块十轴IMU加速度气压计陀螺仪_资料编号29

购买了正点原子的ATK-IMU901模块后,发现例程给的是HAL库的,本项目将HAL库例程转换为库函数版本(基于STM32)。实战开发,亲测无误。

嵌入式阿齐Archie 3864

【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)

XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。

奶爸的编程之路,也就一周冷个三天 414
上一篇: 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、付费专栏及课程。

余额充值