翻页检测文档V3.0
功能:判断何时向服务器发送需要识别的图片,在客户端(android、linux、RTOS)执行算法模块。
翻页检测的功能需要在客户端实现,需要将图灵提供的算法模块集成到设备上。
c语言版本
- 输入参数:
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 |
- 输出参数:
| 输出参数 | 必选 | 类型 | 描述 |
|---|---|---|---|
| isMotion | 是 | int | 返回的值代表是否需要翻页;1-检测到翻页、该图片需要上传 <=0-未翻页 |
- 调用方法:
// 先初始化
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)
- 文件说明:
| 文件名 | 描述说明 |
|---|---|
| tl_imgproc.c | 图像处理相关算法 |
| tl_imgproc.h | 图像处理-图结构 |
| motion_detect_c.c | 翻页检测核心代码 |
| motion_detect_c.h | 翻页检测头文件 |
- 调用示例:
//初始化翻页的结构体 注意,如果翻页检测在一直调用,该结构信息需要一直保留着
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、建议使用yuv420的数据,yuv420的数据是速度最快,消耗内存最小的 2、翻页的源码里不要带有中文注释,部分平台运行会死机
android 版本接口
-
依赖包: libturing_story.so(翻页检测的so包)
-
使用步骤
初始化—— 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)
- 初始化
输入参数
| 参数 | 必选 | 类型 | 描述 |
|---|---|---|---|
| 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 | 当前的时间戳(毫秒级) |
- 翻页检测
输入参数
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| 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、提升翻页的灵敏度,提高准确率和召回率