背景
目前主流的扫码框架主要是ZXing和Zbar两种。ZXing是Google官方的二维码扫码库,Zbar是第三方开发者提供的(已经没人在维护)。对于App日常的一些扫码需求,不管是ZXing还是Zbar都能满足。但是碰到一些特殊的场景,ZXing和ZBar识别率就不高。这些场景包括:
二维码灰色比较模糊
大角度斜扫二维码
由光源引发的摄像头干扰,比如手机扫描屏幕上的二维码会出现条纹或者噪点
下图就是一张模糊样图,读者可以自行用市面上主流的App扫码测试。
对于此种问题,就必须结合openCV处理了。
使用
OpenCV官方介绍:
OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. OpenCV was built to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in the commercial products. Being a BSD-licensed product, OpenCV makes it easy for businesses to utilize and modify the code.
sdk下载地址:https://opencv.org/releases/
操作步骤:
AS新建一个项目,将/sdk/java当作module引入,由于 OpenCV 库的版本一般情况下和你的工程的版本号不同,所以需要把 OpenCV 库目录下的 build.gradle 中的编译版本,构建版本等参数设置成和工程一样。
app主工程引入/samples随意一工程的代码,build之后会提示需要安装OpenCV Manager apk。实际项目中,不可能同时需要用户同时安装两个apk。 为了解决这个问题需要引入/sdk/native/libs下面的.so文件,执行成功发现不再需要安装OpenCV Manager apk了。