8.NDK Android jni开发 opencv 3分钟学会 身份证识别tess-two(人工智能)

13 篇文章 0 订阅
8 篇文章 0 订阅

openCV:图片处理

OCR:文字识别技术

 

 

调试的时候:Visulas studio;开发软件

然后把这个代码移动到java里面去,因为用studio效率太低了。

可以直接在Visulas studio进行调试。然后看到效果

 

比如:如果要得到一张图片。要得到Bitmap对象,然后放到c里面

在Visulas studio可以直接用到。

 

 

图片灰度:图片灰度可以降低图片比较的复杂度,提高效率

 

demo地址:

https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FApeCold%2FLearn_IDRecognize

 

 

实现流程:

手机获取身份证图片

找到文字所在图片的区域
使用openCV进行图像定位与分割
tesseract-OCR文字识别

 

 

实现原理分析 :通过zxing库捕捉相机获得图像,或者从相册里获取图片,再对图像进行处理. 对图像处理 : 对源图像进行像素放大缩小处理>预处理(图像灰度化,低通滤波处理,边缘检测,二值化,中值平滑处理,闭运算)>刷选身份证号的矩形,得到有效行>对有效行进行灰度化,二值化>然后就进行识别.

 

 

图片处理:

机器视觉分为三个阶段 : 图像转化、图像分析、图像理解。若要将一幅图像转化为方便分析理解的格式,有一个很关键的过程就是“图像二值化”。一幅图像能否分析理解的准确很大程度上来说取决于二值化(非黑即白)效果的好坏。而在二值化之前,有一个重要步骤,那便是“图像灰度化”

 

  所以,先将图片灰度化,这里有个公式:f(x) = R*0.3+G*0.51+B*0.11,实际需要做的就是将图片的每个像素(这里假定android里用ARGB表示一个像素点)的red、green、blue取出并代入此公式算出每个点的灰度值,这样便实现了灰度化 

————————————————

再来看看二值化,二值化的原理就是取一个阈值,然后将每个像素点的灰度值和这个阈值进行比较,如果大于阈值则定为白色,反之为黑色(这里假定要识别的图像是白底黑字),如此一来便实现了二值化。可以看到,最重要的是这个阈值,该怎么取值才合理,最简单的阈值取定便是取整幅图画的均值了: 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

把图片识别文字的库:google的。可以训练模型

tess-two api识别

dependencies { implementation 'com.rmtheis:tess-two:9.0.0' }

 

 

java -----jni---------c

java调用jni通过JVM

jni调用c,直接无缝对接

 

里面把java都类型转c

c转java类型

 

里面方法名是如何对应的?

通过包名,类名规则,java-------jni方法的关系

 

cmake是干嘛用的?

类似java,加载库,通过依赖compile

 

 

西瓜视频:

android 架构师

android 进阶小刘

 

参考博客:

https://blog.csdn.net/WangRain1/article/details/97371424

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值