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:指定翻页检测触发的最大阈值和最小阈值,使用规则:在绘本识别成功后获取 ocrFlag 和 fingerFlag ,然后设定不同的阈值,实现不同类型的绘本使用不同的阈值,不建议频繁修改该值。
示例:
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下载
更新记录
当前版本:V1.0.3
1.增加翻页检测灵敏度可配置。
历史版本:
V1.0.2
1.优化指读模式检测灵敏度;