【Android】移动端二维码扫描解决方案衍变

移动端二维码扫描解决方案衍变

目录

踩坑&方案

Zxing yyds? no,no,no -> ScanKit yyds!

方案选择

Zxing方向

  • Zxing入坑

接到一个二维码扫描的需求,一开始对于在开源SDK的选择中, 选择了ZXing.


  • 坑位1: Zxing功能拆解

在方案实施过程中, 发现Zxing封装的Zbar对于开发来说过于耦合, 所以进行了拆解,对核心的QRScanView进行定向化开发.

在这里插入图片描述


  • 坑位2: 资源不复用的胃痛

这需要调用摄像头资源, 而原本的人脸识别已经占用了摄像头资源.
所以我采用两个界面切换的方式进行转换. 但是频繁的切换, 频繁开关摄像头资源. 导致了系统极易Stack Overflow而崩溃.


  • 坑位3: 堪忧的效果

所以我整合了人脸及二维码识别进一个界面, 直接将二维码识别的进程附着在人脸识别的帧回调中,
启用开关的方式来调用QRScanView二维码的onFrameChanged方法.
成功
此方案可行.虽然能够识别,但是效果不是很好,往往手机举半天,还得把二维码贴在摄像头脸上才能识别出来.
显然这中效果是达不到工业应用级别的,用户体验很不好.


  • 坑位4: 试图给机会-缩小识别范围

怎么办呢?能不能优化了?
1将图像扫描面积缩小, 只扫描方框区域. 缩小识别范围. 实践不可行.
本来全屏好不容易扫出来, 现在扫描几率更渺茫了.


  • 坑位5: 试图给机会-优化算法

对算法进行优化呢? 现在结合之前图像处理算法的经验.
可不可以用灰度化,二值化之类的算法呢. 然而Zxing已经做了, 那么是不是传入的帧图像已经压缩过了呢,
导致本就不清晰的摄像画面更加模糊导致识别不出呢.

实践: 先将帧图像转化成Bitmap. 再对Bitmap做放大切割. 不可行. 直接识别不出来了. 看来这条分支路线走死了.


Hms ScanKit方向

  • 坑位6: Hms ScanKit黑屏

那么回到Zbar本身, 搜阅资料发现, Zbar的效率问题是确实存在的.
及时止损,补救时间. 切换Hms ScanKit, 发现上手配置很简单. 下载源码demo, 参考源码, 采用Custom方式自定义界面识别, 但是很奇怪.
一样的代码, 自己的源码预览是黑屏的, 识别也没有效果.


  • 成功脱坑

切换方法. 沿用坑位3的思路,
附着帧回调, 直接调用Bitmap识别方法. 所以还是将二维码识别的进程附着在人脸识别的帧回调中,
将Byte图像流转换成Bitmap, 再异步处理. Bingo!!! 实践成功,识别速度很快. 效果很好可行!!!

总结

第一层: 上文中没有一个步骤是多余的无用的, 上一步骤是下一个步骤的基础和继承

第二层: 人生无无用的经历, 包括那些弯路也是, 恰恰因为弯路上的宝贵经验,思考和风景, 才有此刻的敏锐的胆识和超然的心态.

第三层: 华为yyds!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mozhimen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值