算法 自动采集列表( Android端相机视频流采集与实时边框识别扫描算法(SmartScanner) )

优采云 发布时间: 2021-10-24 11:09

  算法 自动采集列表(

Android端相机视频流采集与实时边框识别扫描算法(SmartScanner)

)

  

  英语

  SmartCamera是一款Android相机扩展库,提供高度可定制的实时扫描模块,可以实时采集并识别相机中物体的边框是否与指定区域匹配。如果你觉得还不错,欢迎star和fork。

  语言描述有点生涩。具体实现的功能如下图所示。适用于*敏*感*词*、名片、文件等内容的扫描、自动拍摄、裁剪。

  您可以下载并体验SmartCamera集成的“卡片备忘录”,并将卡片安装到您的手机中:

  

  您也可以下载演示 apk SmartCamera-Sample-debug.apk 来体验:

  

  实时扫描模块(SmartScanner)是这个库的核心功能。借助相机PreviewCallback接口的预览流和跑马灯视图MaskView提供的跑马灯区域RectF,可以实时判断内容是否与跑马灯匹配,性能良好。

  为了更方便地使用Android Camera,SmartCamera在源代码中引用了谷歌开源的CameraView,稍作修改,支持Camera.PreviewCallback回调获取相机预览流。

  SmartCameraView继承了修改后的CameraView,增加了一个跑马灯遮罩视图(MaskView)和一个实时扫描模块(SmartScanner)。跑马灯视图是您看到的相机上方的一层跑马灯,并配备了从上到下的扫描效果。当然,你也可以实现 MaskViewImpl 接口来自定义跑马灯视图。

  只需使用本库提供的SmartCameraView即可实现上述Demo中的效果。当然,如果你的项目中已经实现了*敏*感*词*模块,也可以直接使用SmartScanner来实现实时扫描效果。

  (也可以关注我的另一个库SmartCropper:一个简单好用的智能图片裁剪库,适用于*敏*感*词*、名片、文件等照片的裁剪)

  SmartCamera原理解析:Android*敏*感*词*视频流采集与实时帧识别

  扫描算法调优 SmartScanner 提供了丰富的算法配置。用户可以自行修改扫描算法,以获得更好的适应性。阅读附录1中提供的每个参数的说明,以获得更好的识别效果。

  

  为了更方便、更高效的优化算法,SmartScanner贴心地为您提供了扫描预览模式。开启预览功能后,可以使用SmartScanner获取每一帧的处理结果并输出到ImageView,实时观察原生层扫描的结果。白线区域为边缘检测结果,白线加粗区域为识别边界。

  

  您的目标是通过调整SmartScanner的各种参数,使内容边界清晰可见,识别出的框(白色粗线段)准确。

  注意:SmartCamera 对性能和内存进行了各方面的优化,但由于不必要的性能资源浪费,请在算法参数调优完成后关闭预览模式。

  使用权

  1. 在根目录添加 build.gradle :

  allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

  2.添加依赖

  dependencies {

implementation 'com.github.pqpo:SmartCamera:v2.0.0'

}

  注意:由于使用了JNI,请避免混淆

  -keep class me.pqpo.smartcameralib.**{*;}

  使用1. 引入相机布局并启动相机(必要时启动预览)

  ">

  @Override

protected void onResume() {

super.onResume();

mCameraView.start();

mCameraView.startScan();

}

@Override

protected void onPause() {

mCameraView.stop();

super.onPause();

if (alertDialog != null) {

alertDialog.dismiss();

}

mCameraView.stopScan();

}

  注意:如果开启了预览,不要忘记调用相应的打开和结束预览的方法。

  2. 修改扫描模块参数(可选,调优算法,同时开启第4步的预览模式)

  扫描模块各个参数含义详见附录一

  private void initScannerParams() {

SmartScanner.DEBUG = true;

SmartScanner.detectionRatio = 0.1f;

SmartScanner.checkMinLengthRatio = 0.8f;

SmartScanner.cannyThreshold1 = 20;

SmartScanner.cannyThreshold2 = 50;

SmartScanner.houghLinesThreshold = 130;

SmartScanner.houghLinesMinLineLength = 80;

SmartScanner.houghLinesMaxLineGap = 10;

SmartScanner.firstGaussianBlurRadius = 3;

SmartScanner.secondGaussianBlurRadius = 3;

SmartScanner.maxSize = 300;

SmartScanner.angleThreshold = 5;

// don't forget reload params

SmartScanner.reloadParams();

}

  注意:修改参数后不要忘记通知native层重新加载参数:SmartScanner.reloadParams();

  3. 配置遮罩选框视图(可选,修改默认视图,或修改选框区域)

  配置 MaskView 各个方法的含义详见附录二

<p>final MaskView maskView = (MaskView) mCameraView.getMaskView();;

maskView.setMaskLineColor(0xff00adb5);

maskView.setShowScanLine(true);

maskView.setScanLineGradient(0xff00adb5, 0x0000adb5);

maskView.setMaskLineWidth(2);

maskView.setMaskRadius(5);

maskView.setScanSpeed(6);

maskView.setScanGradientSpread(80);

mCameraView.post(new Runnable() {

@Override

public void run() {

int width = mCameraView.getWidth();

int height = mCameraView.getHeight();

if (width

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线