跳转至

Android SDK翻页检测

翻页检测Android SDK提供aar,可直接使用BookRecognizer类调用相关的方法。具体使用可以下载SDK参考Demo。

集成

将 motiondetect-release.aar 复制到您的项目的app/libs/目录下

修改您的项目的app/build.gradle文件,将下面依赖库添加到您的依赖目录中。

implementation(name: 'motiondetect-release', ext: 'aar')

初始化

参数说明

参数 必选 类型 描述
waitTime int 最小的阈值等待时间 默认 100ms
dstHeight int 缩放图片的高度-默认100 调整识别翻页的灵敏度
cropRate int 裁切图片大小,这里是比例大小默认值为 33 ,一般裁切1/3 调整识别翻页的灵敏度
serverWaitTime int 服务器等待时间,服务端对前端的时间限制,调整识别速度 默认0
timer int 定时对比,单位ms(毫秒) 默认100ms
    //使用默认值
    bookRecognizer = new BookRecognizer();

    //指定参数
   int threadWaitTime = 100;
   int dstHeight = 100;
   int cropRate = 0;
   int serverWaitTime = 0;
   int timer = 100;
   bookRecognizer = new BookRecognizer(minThread, maxThread, threadWaitTime, dstHeight, cropRate, serverWaitTime, timer);

备注:新建BookRecognizer对象时,内部会默认进行初始化。不要二次新建该对象,否则会造成重复初始化。

检测方法

参数说明:

参数名称 必选 类型 描述
nv21Yuv byte[] 图像内容-像素值
数据格式:支持RGB,BGR,yuv422 , yuv42
支持大小为640x480
width int 图像-宽度
height int 图像-高度
ocrFlag int ocrFlag=1:ocr模式
ocrFlag=0:非ocr模式
fingerFlag int fingerFlag=1:指读模式
fingerFlag=0:非指读模式
min_thr int 最小阈值,和上一张图片对比的差异 默认30
调整识别翻页的灵敏度
max_thr int 最大阈值,和上一张图片对比的差异 默认 100
调整识别翻页的灵敏度,想增加翻页检测的灵敏度时,可以适当减小这个值来实现

提供两种方式:

moveDetect:使用默认的灵敏度;

moveDetectThreshold:指定翻页检测触发的最大阈值和最小阈值,使用规则:在绘本识别成功后获取 ocrFlagfingerFlag ,然后设定不同的阈值,实现不同类型的绘本使用不同的阈值,不建议频繁修改该值。

示例:

        var minThr = 60
        var maxThr = 100
        if(fingerFlag == 1 && ocrFlag == 1){
            maxThr = 15
            minThr = 5
        }else if(fingerFlag == 1 && ocrFlag != 1){
            maxThr = 15
            minThr = 5
        }else if(fingerFlag != 1 && ocrFlag == 1){
            maxThr = 60
            minThr = 15
        }else if(fingerFlag != 1 && ocrFlag != 1){
            maxThr = 60
            minThr = 20
        }
        val moveValue = bookRecognizer!!.moveDetectThreshold(yuvData, width, height, minThr, maxThr, ocrFlag)

方法说明:

    /**
     * 
     * @param nv21Yuv 摄像头预览的yuv数据
     * @param width yuv数据的宽度
     * @param height yuv数据的高度
     * @param ocrFlag 是否是ocr模式,1为ocr模式,0为非ocr模式。ocr模式:输出的图片为大小和输入的大小一     * 致,非ocr模式:输出的图片为大小是输入的二分之一
     * @param fingerFlag 是否是指读模式,1为指读模式,0为非指读模式
     * @return 检测后输出的图片数据
     */
    public byte[] moveDetect(byte[] nv21Yuv, int width, int height, int ocrFlag, int fingerFlag)


   /**
     *
     * @param nv21Yuv 图片yuv
     * @param width 图片宽
     * @param height 图片高
     * @param min_thr 最小阈值
     * @param max_thr 最大阈值
     * @param ocrFlag 是否orc绘本
     * @return 检测后输出的图片数据
     */
    public byte[] moveDetectThreshold(byte[] nv21Yuv, int width, int height, int min_thr, int max_thr, int ocrFlag)

翻页动作判定

当返回的byte[] == null,则说明未翻页,不为null则表示翻页,byte[]为翻页动作稳定之后的图片数据,且ocrFlag==1时输出图尺寸640x480,ocrFlag为0时输出图尺寸320x240;

备注

  • 输入值byte[] nv21Yuv:该数据为需要检测的图片yuv数据,可以将Android端Camera预览的每一帧数据传入;注意width和height参数必须与输入的yuv数据一致。支持大小为640x480

  • ocrFlag表示当前是否为ocr模式,1为ocr模式,0为非ocr模式。ocr模式:输出的图片大小与输入的一致,非ocr模式:输出的图片大小为输入的二分之一;

  • fingerFlag表示当前是否为指读模式,指读参数将会影响翻页检测的灵敏度,但不影响输出图片的大小;

销毁

调用detectFree方法可以释放。

    bookRecognizer.detectFree()

混淆

-keep class com.turingapi.turingstory.** { *; }
-dontwarn com.turingapi.turingstory.**

SDK下载

Android翻页检测库下载

更新记录

当前版本:V1.0.3

1.增加翻页检测灵敏度可配置。

历史版本:

V1.0.2

1.优化指读模式检测灵敏度;