跳转至

翻页检测文档V3.0

功能:判断何时向服务器发送需要识别的图片,在客户端(android、linux、RTOS)执行算法模块。

翻页检测的功能需要在客户端实现,需要将图灵提供的算法模块集成到设备上。

c语言版本

  1. 输入参数:

getMotionResult 参数列表

参数名称 必选 类型 描述
md MotionDetection 翻页检测结构
image unsigned char[] 图像内容-像素值
数据格式:支持RGB,BGR,yuv
width int 图像-宽度
height int 图像-高度
channels int 图像通道数
imageType enum TL_IMAGE_TYPE 图像-类型:enum
说明:image 的图像内容
nowTime long long 当前的时间戳(毫秒级)

MotionDetection 初始化

参数 必选 类型 描述
min_thr int 最小阈值,和上一张图片对比的差异 默认40 调整识别翻页的灵敏度
max_thr int 最大阈值,和上一张图片对比的差异 默认 100 调整识别翻页的灵敏度
minThrWaitTime int 最小的阈值等待时间 默认 100ms
dstHeight int 缩放图片的高度-默认100 调整识别翻页的灵敏度
cropRate int 裁切图片大小,这里是比例大小默认值为 33 ,一般裁切1/3 调整识别翻页的灵敏度
serverWaitTime int 服务器等待时间,服务端对前端的时间限制,调整识别速度 默认0
timer int 定时对比,单位ms(毫秒) 默认100ms
nowTime long long 当前的时间戳(毫秒级)

图形类型及对应参数:

图像类型 对应参数
GRAY TL_CV_GRAY2GRAY = 0
BGR TL_CV_BGR2GRAY = 6
RGB TL_CV_RGB2GRAY = 7
YUV420 TL_CV_YUV2GRAY_420 = 106
YUV_NV21 TL_CV_YUV2GRAY_NV21 = TL_CV_YUV2GRAY_420
YUV_NV12 TL_CV_YUV2GRAY_NV12 = TL_CV_YUV2GRAY_420
YUV_YV12 TL_CV_YUV2GRAY_YV12 = TL_CV_YUV2GRAY_420
IYUV TL_CV_YUV2GRAY_IYUV = TL_CV_YUV2GRAY_420
YUV_I420 TL_CV_YUV2GRAY_I420 = TL_CV_YUV2GRAY_420
YUV_422P TL_CV_YUV2GRAY_Y422P = TL_CV_YUV2GRAY_I420
YUV_UYVY TL_CV_YUV2GRAY_UYVY = 123
YUV_YUY2 TL_CV_YUV2GRAY_YUY2 = 124
YUV_Y422 TL_CV_YUV2GRAY_Y422 = TL_CV_YUV2GRAY_UYVY
YUV_UYNV TL_CV_YUV2GRAY_UYNV = TL_CV_YUV2GRAY_UYVY
YUV_YVYU TL_CV_YUV2GRAY_YVYU = TL_CV_YUV2GRAY_YUY2
YUV_YUYV TL_CV_YUV2GRAY_YUYV = TL_CV_YUV2GRAY_YUY2
YUV_YUNV TL_CV_YUV2GRAY_YUNV = TL_CV_YUV2GRAY_YUY2
  1. 输出参数:
输出参数 必选 类型 描述
isMotion int 返回的值代表是否需要翻页;1-检测到翻页、该图片需要上传 <=0-未翻页
  1. 调用方法:

// 先初始化

initMotionDetection(MotionDetection *md,int min_thr,int max_thr,int minThrWaitTime,int dstHeight,int cropRate,int serverWaitTime, int timer,long long nowTime);

// 再调用翻页检测 getMotionResult(MotionDetection md, const unsigned char image, int width, int height, int channels, TL_IMAGE_TYPE imageType, long long nowTime)

  1. 文件说明:
文件名 描述说明
tl_imgproc.c 图像处理相关算法
tl_imgproc.h 图像处理-图结构
motion_detect_c.c 翻页检测核心代码
motion_detect_c.h 翻页检测头文件
  1. 调用示例:

    //初始化翻页的结构体  注意,如果翻页检测在一直调用,该结构信息需要一直保留着
    MotionDetection md;

    int min_thr = 40;
    int max_thr= 100;
    int minThrWaitTime = 100;
    int dstHeight = 100;
    int cropRate = 33;
    int serverWaitTime = 0; // 说明:如果是1000ms内只能向服务器发送一次
    int timer = 100;// 单位毫秒
    long long nowTime = 12312312312;// 毫秒级的时间戳

    initMotionDetection(&md,min_thr,max_thr,minThrWaitTime,dstHeight,cropRate,serverWaitTime,timer, nowTime);


    // 将MotionDetection 和图片的相关信息传入
    // result >0 表是可以翻页  否则不翻页
    int result = getMotionResult(md, yuvData, width, height, 2, TL_CV_YUV2GRAY_UYVY,nowTime);


// 程序结束时释放资源  注意
cvFreeImageTL(md.frame1);  


  1. 注意 1、建议使用yuv420的数据,yuv420的数据是速度最快,消耗内存最小的 2、翻页的源码里不要带有中文注释,部分平台运行会死机

android 版本接口

  1. 依赖包: libturing_story.so(翻页检测的so包)

  2. 使用步骤

初始化—— jint JNIEXPORT JNICALL Java_com_turingapi_turingstory_BookRecognizer_jniMoveDetectInit(JNIEnv* env,jobject thiz, jint min_thr, jint max_thr, jint minThrWaitTime, jint dstHeight, jint cropRate,jint serverWaitTime, jint timer, jlong nowTime)

传入图像信息获取翻页检测结果—— jint JNIEXPORT JNICALL Java_com_turingapi_turingstory_BookRecognizer_jniMoveDetect(JNIEnv* env, jobject thiz, jbyteArray img_data, jint width, jint height,jint channels,jint img_type, jlong nowTime)

释放(程序结束时释放资源)—— jint JNIEXPORT JNICALL Java_com_turingapi_turingstory_BookRecognizer_jniMoveDetectFree(JNIEnv* env, jobject thiz)

  1. 初始化

输入参数

参数 必选 类型 描述
min_thr int 最小阈值,和上一张图片对比的差异 默认40 调整识别翻页的灵敏度
max_thr int 最大阈值,和上一张图片对比的差异 默认 100 调整识别翻页的灵敏度
minThrWaitTime int 最小的阈值等待时间 默认 100ms
dstHeight int 缩放图片的高度-默认100 调整识别翻页的灵敏度
cropRate int 裁切图片大小,这里是比例大小默认值为 33 ,一般裁切1/3 调整识别翻页的灵敏度
serverWaitTime int 服务器等待时间,服务端对前端的时间限制,调整识别速度 默认0
timer int 定时对比,单位ms(毫秒) 默认100ms
nowTime long long 当前的时间戳(毫秒级)
  1. 翻页检测

输入参数

参数名称 必选 类型 描述
md MotionDetection 翻页检测结构
image unsigned char[] 图像内容-像素值
数据格式:支持RGB,BGR,yuv
width int 图像-宽度
height int 图像-高度
channels int 图像通道数
imageType enum TL_IMAGE_TYPE 图像-类型:enum
说明:image 的图像内容
nowTime long long 当前的时间戳(毫秒级)
图像类型 对应参数
GRAY TL_CV_GRAY2GRAY = 0
BGR TL_CV_BGR2GRAY = 6
RGB TL_CV_RGB2GRAY = 7
YUV420 TL_CV_YUV2GRAY_420 = 106
YUV_NV21 TL_CV_YUV2GRAY_NV21 = TL_CV_YUV2GRAY_420
YUV_NV12 TL_CV_YUV2GRAY_NV12 = TL_CV_YUV2GRAY_420
YUV_YV12 TL_CV_YUV2GRAY_YV12 = TL_CV_YUV2GRAY_420
IYUV TL_CV_YUV2GRAY_IYUV = TL_CV_YUV2GRAY_420
YUV_I420 TL_CV_YUV2GRAY_I420 = TL_CV_YUV2GRAY_420
YUV_422P TL_CV_YUV2GRAY_Y422P = TL_CV_YUV2GRAY_I420
YUV_UYVY TL_CV_YUV2GRAY_UYVY = 123
YUV_YUY2 TL_CV_YUV2GRAY_YUY2 = 124
YUV_Y422 TL_CV_YUV2GRAY_Y422 = TL_CV_YUV2GRAY_UYVY
YUV_UYNV TL_CV_YUV2GRAY_UYNV = TL_CV_YUV2GRAY_UYVY
YUV_YVYU TL_CV_YUV2GRAY_YVYU = TL_CV_YUV2GRAY_YUY2
YUV_YUYV TL_CV_YUV2GRAY_YUYV = TL_CV_YUV2GRAY_YUY2
YUV_YUNV TL_CV_YUV2GRAY_YUNV = TL_CV_YUV2GRAY_YUY2

输出参数

输出参数 必选 类型 描述
isMotion int 返回的值代表是否需要翻页;
isMotion=1- 检测到翻页、该图片需要上传
isMotion<0- 未翻页

更新日志

1、增加定时对比图片的机制,舍弃fps 2、初始化参数设定,目前全部按照默认值选 3、提升翻页的灵敏度,提高准确率和召回率