AI 视觉智能售货柜 RJDVA SDK 使 说明书 RJDVA SDK 说明 1. RJDVA SDK 于锐捷动态视觉柜 AI 云平台接, 提供相机数据解码 关键帧提取算法 视频硬编码及数据打包与发送 AI 云平台功能 2. RJDVA SDK 持安卓设备 armeabi-v7a,arm64-v8

Similar documents
C 1

建模与图形思考

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

新版 明解C++入門編

X-One 系统看穿式监管 V1.6.3 版本客户端及 API 使用相关说明

CC213

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

FY.DOC

ebook50-15

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

华恒家庭网关方案

目 录 概 述 背 景 社 会 背 景 行 业 背 景 需 求 分 析..6 3 优 势 分 析 资 源 优 势 品 牌 优 势 技 术 优 势 用 户 体 验.....

chap07.key

目录 1. RK 支持的编解码类型 头文件与库文件 结构体介绍 编解码枚举定义 编解码结构体定义 解码调用流程 解码创建过程 解码过程 解码销毁过程

新・解きながら学ぶJava

C/C++ - 文件IO

untitled

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

C/C++语言 - C/C++数据

untitled

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

并行计算

Microsoft Word - 实用案例.doc

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

新・解きながら学ぶC言語

Microsoft Word - 第3章.doc

_汪_文前新ok[3.1].doc

第3章.doc

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

新・明解C言語入門編『索引』

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

untitled

Microsoft Word - CIN-DLL.doc

Chapter 1 What is Programing Paradigm 1

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

C C

RxJava

電機工程系認可證照清單 /7/1

02

提问袁小兵:

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

ESP-Jumpstart

概述

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09: 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

書本介紹


获取 Access Token 1 基础概念 access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要妥善保存,access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新

在挑选合适的 SDK 的时候需要注意, 标准 windows 平台应用选择 FBX SDK VS2015,windows 应用商店和全平台通用的不用考虑 windows 全平台通用的应用是 windows10 新推出的功能, 可以打通 windows phone windows s

Microsoft Word 電腦軟體設計.doc

51 C 51 isp 10 C PCB C C C C KEIL

通过Hive将数据写入到ElasticSearch

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

untitled

Guava学习之Resources

Java

新版 明解C言語入門編

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

C/C++程序设计 - 字符串与格式化输入/输出

优斗士微分销产品使用指南

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

北京大学

3.1 num = 3 ch = 'C' 2

PowerPoint Presentation

概述

untitled

mvc

CHAPTER 1

untitled

<4D F736F F D C2E0BEC7A6D2A4ADB14DB0EAA4E52DB8D5C344A8F72E646F63>

untitled

Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

附 件 一 : 办 理 集 中 式 银 期 转 账 业 务 网 点 名 单 序 号 地 区 网 点 名 称 地 址 联 系 人 电 话 23 工 商 银 行 安 徽 省 铜 陵 百 大 支 行 铜 陵 市 长 江 东 路 50 号 鲁 桂 珍 工 商 银 行 安 徽

2. 二 年 級 吳 毓 秀 老 師 : 感 謝 午 餐 公 司 平 時 均 能 準 時 送 餐, 但 希 望 能 不 要 使 用 加 工 品, 且 學 生 反 映 希 望 能 多 加 蛋 品 的 食 物 3. 三 年 級 柯 阿 青 老 師 : 雞 肉 有 血 水 味, 請 午 餐 公 司 能 調

人 物 春 秋 杨 永 泰 将 其 削 藩 策 略 概 括 为 : 以 经 济 方 法 瓦 解 冯 玉 祥 的 第 二 集 团 军, 以 政 治 方 法 解 决 阎 锡 山 的 第 3 集 团 军, 以 军 事 方 法 解 决 李 宗 仁 的 第 四 集 团 军, 以 外 交 方 法 对 付 张 学

,,,,,,, (,, ),,,,,,,,,,,,,,, ,,, 4 11,, ( ),,,, ( ), :, ( ),,, 1995, 66 ; ( ),, 1996, , 3-4,,

2002 4,,, 1941,,,,,,,,,,,,,,,,,, : ;:, 1991,

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

範本檔

高雄市立五福國民中學九十四學年度第一學期第三次段考二年級本國語文學習領域試題卷

台北老爺校外實地參訪結案報告


糖尿病食譜




云搜

C/C++ - 函数

untitled

Microsoft Word - 44.doc

《C语言程序设计》教材习题参考答案

Transcription:

AI 视觉智能售货柜 RJDVA SDK 使 说明书 RJDVA SDK 说明. RJDVA SDK 于锐捷动态视觉柜 AI 云平台接, 提供相机数据解码 关键帧提取算法 视频硬编码及数据打包与发送 AI 云平台功能. RJDVA SDK 持安卓设备 armeabi-va,arm-v8a 两种 CPU 类型, 前在联发科 MT8A 与瑞芯微 RK88 两款 CPU 通过测试 RJDVA SDK 作时序图 录结构 Headers autobounding.h // ROI 区域自动标定基类 basedatatype.h // 基础数据类型类 bgsegment.h // 背景差分流处理类 bgsubcnt.h // CNT 方法定义基类 cameraautocalib.h // 相机自动标定 ROI 区域类

8 9 0 8 9 0 8 9 cameracfgreader.h // 读取相机配置文件类 cameraframeprocess.h // 图像预处理类 DataPacketSender datapacketsender.h // 数据包发送类 GrpcClient GrpcClient.h // Grpc 客户端类 datapacking.h // 数据打包工具类 datastation.h // 数据中转处理类 decoderprocess.h // 图像解码处理类 encoderprocess.h // 图像编码处理类 hencoder.h // H 编码类 keyframefilter.h // 关键帧处理类 LogUtils.h // 日志类 mjpgdecoder.h // MJpeg 解码类 mogcalculator.h // 背景差分计算类 rjdva_c.h // RJDVA C 语言接口 rjdva.h // RJDVA 基类 shadefile.h // 隐藏配置文件 threadmanager.h // 线程管理基类 Tool.h // 工具类 utility.h // 辅助工具类 videodecoder.h // 视频解码基类 videoencoder.h // 视频编码基类 使 流程及接 说明. RJDVA 初始化在初始化的过程中会将传 的 strinfojson 参数写 到 件中, 因此需要 定的权限, 在调 法之前可以先确保读写权限, 以便后续操作 调 Init 函数执 初始化流程, 函数原型如下 : * @brief 执行算法初始化, 软件启动时调用 * @param strdeviceid - 设备 ID * @param strserveripport - 锐捷 AI 云平台 IP 与 Port 组成的字符串, 如 "0.0.0.0:9999" 8 9 * @param strworkspacepath 工作环境路径 * @param strinfojson - 包含相关信息的 json 格式的字符串内容 * @return 初始化成功返回 true, 失败返回 false bool rjdva_init(const char* strdeviceid, const char* strserverippor, const char* strworkspacepath, const char* strinfojson); strinfojson 说明如下 :

字段名称类别 Host_Smart 接 域名 String appid sercet 对接接 基础字段 ( 有使 平台提供 ) 对接接 基础字段 ( 有使 平台提供 ) String String company 公司名称信息 String keepalive 域名端 String keepalive: 该字段 于将订单信息发送给平台, 实现对订单的全流程监控, 如 需这个业务可以 传 空值 ( 如 :keepalive:"") 或者不传 这个字段亦可 strinfojson 参数示例 : {"Host_Smart":"https://api.xiaomaigui.com/dynamic_vision/notify","appid": "0000000","sercet":"fdeecdfc80c9cbdd","compan y":"ruijie","keepalive":"http://8.8.80.:998"}. 调 开 回调函数, 通知 RJDVA 当前处于购物流程, 并传 订单编号 函数原型如下 : * @brief 开门回调函数, 收到门锁打开信号时调用此函数 * @param strorderid - 订单编号 void rjdva_opendoorcallback(const char* strorderid);. 调 传 相机数据 (MJpeg 数据流, 需解码 ) 的接, 传 相机数据供处理 函数原型如下 : * @brief 开门成功后, 获取相机原始数据写入 * @param vdataframe - 由相机原始数据等信息组成的结构体 * @return 调用成功返回 true, 失败返回 false bool rjdva_pushvdataframe(vdataframe vdataframe);. 调 传 重 数据 ( 所有重 传感器之和, 已去 ) 的接, 传 相机数据供处理 函数原型如下 : * @brief 开门成功后, 获取重力去皮后的数据并写入 * @param gdataframe - 由重力数据等信息组成的结构体 * @return 调用成功返回 true, 失败返回 false bool rjdva_pushgdataframe(gdataframe gdataframe);

. 调 关 回调函数, 通知 RJDVA 购物流程已结束 () 调 关 回调需要在调 开 回调之后, 不然关 回调 法成功执 ; () 关 回调需传 个参数 nstatecode, 作 于将上层捕获到硬件异常信息传递给 SDK, 借此使得之后阶段处理的时候能够有更好的效果, 如果没有此功能传递参数为 0 即可 ; 函数原型如下 : * @brief 关门回调函数, 收到门锁关闭信号时调用此函数 * @param nstatecode - 设备状态码, 用于反馈上层捕获到的异常 ; 若上层不进行异常捕获, 设置为 0 即可 bool rjdva_closedoorcallback( const int nstatecode );. 调 发送数据包接, 将数据包发送 锐捷 AI 云平台 数据包在购物结束后存储在 Init 函数传 的 作环境路径的 DataStation 录下, 由于可能 络异常导致数据发送中断, 建议维护数据包列表, 数据包发送成功后则删除数据包列表中相应项, 否则重新发送数据包 函数原型如下 : 8 * @brief 发送算法数据包至锐捷 AI 云平台 * @param strorderid - 订单编号 * @param strtoken - token 信息 * @param strzippath - ZIP 包保存路径 * @return 调用成功返回 true, 失败返回 false bool rjdva_senddatapacket(const char* strorderid, const char* strtoken, char* strzippath); strzippath 参数说明如下 : 事先声明参数 strzippath, 且这个参数应为空 ( 如 char strzippath;), 将参数传 并且 法执 完成之后, 参数 strzippath 会获得赋值, 以此获取到数据包保存的路径 ;. 相关数据结构定义如下 : 8 9 0 *********************************************************************** ********************** //! \ingroup STRUCTS //! \struct GDATAFRAME //! 重力帧相关信息 *********************************************************************** ********************** typedef struct _gdataframe { float fvalue; // 当前重力值 ( 去皮, 所有重力传感器总和 ) int nframeid; // 帧号 long long lltimestamp; // 当前帧的时间戳 ms

8 9 0 }GDataFrame; *********************************************************************** ********************** //! \ingroup STRUCTS //! \struct VDATAFRAME //! 视觉帧相关数据 *********************************************************************** ********************** typedef struct _vdataframe { unsigned char* pdata; // 当前帧数据指针地址 unsigned int ndatasize; // 当前帧数据大小 int nframeid; // 帧号 long long lltimestamp; // 当前帧的时间戳 ms char strcamerapos[]; // 相机位置信息, 如 TR,DR, 分别代表右上与右下相机 }VDataFrame; 接 调 说明及示例 RJDVA SDK 前 持 C/C++ JAVA 以及 Python 调 C/C++ 接 调 示例如下 : 8 9 0 #include "rjdva_c.h" #ifdef cplusplus extern "C" int main(int argc, char** argv) { #endif rjdva_closedoorcallback(0); return 0; #ifdef cplusplus } #endif JAVA JAVA 调 so 库可以采 JNI 封装的 式, 步骤如下 :. JNI 封装 so 库, 留出接 供上层调. JAVA 上层调 JNI 封装好的 法. 在项 app 录下创建 CMakeLists.txt 另外可以参考相关的调 说明 https://www.sisik.eu/blog/android/ndk/opencv-without-java https://www.cnblogs.com/zhongzhaoxie/p/.html(androidstudio) JNI 接 示例 (native-lib.cpp)

JNIEXPORT void JNICALL Java_eu_sisik_sample_MainActivity_rjdva_CloseDoorCallback( JNIEnv *env, jobject /* this, jint nstatecode) { rjdva_closedoorcallback(nstatecode); } JAVA 调 代码 rjdva_closedoorcallback(0) CMakeLists 件示例 add_library(rdjva_sdk-lib SHARED IMPORTED) set_target_properties( rdjva_sdk-lib PROPERTIES IMPORTED_LOCATION ${RJDVA_LIB_PATH}/${ANDROID_ABI}/libRJDVA.so) target_link_libraries( native-lib rdjva_sdk-lib) Python SDK 包中包含了 个 so 库,python 可以使 ctypes 库来加载 so 库 请根据开发环境选择适配的 so 库, 如 armv 对应的是 位,armv8 对应的是 位 from ctypes import * if name == ' main ': rjdva = cdll.loadlibrary("/path/to/librjdva.so") rjdva.rjdva_closedoorcallback(0) 版本更新记录与下载 上线 期版本号更新说明下载 00-- V0.. RJDVA 调 接 由 C++ 修改为 C RJDVA_ReleaseV0...rar 0-0-09 V0. RK88 版本 RJDVA_ReleaseV0..r ar 0-0-0 V.. 对 Init,SendDataPacket 和 CloseDoorCallback 接 进 修 改, 新增传 参数 RJDVA_ReleaseV.. _RK88.zip 常 问题与解答 (FAQ) SDK 的 作流程是怎么样的? 更详细的 作流程可以参考 档中的时序图, 简单的来说,SDK 作流程如下图 :

在初始化之后需要调 开 回调 rjdva_opendoorcallback 来告知 SDK 开始 成订单 件, 之后 pushdataframe 给 SDK 进 写 数据, 在完成之后需要调 关 回调 rjdva_closedoorcallback 来告知 SDK 订单完成 成最后需要的数据包 下 次需要 成新的订单数据则再调 rjdva_opendoorcallback, 以此循环 控编码怎么传给 SDK? SDK 使 说明 有 参 strdeviceid 双摄像头, 如何传 相机流? 在结构体 _vdataframe 中填 相机位置信息即可,TR 代表上 的相机,DR 代表下 的相机 ( 前暂时采 单侧相机编号 ) 由于 前采 静态 式配置参数, 所以需要按照指定的相机编号进 数据传递, 以免影响数据 成 VDataFrame 结构体传 jpeg 图像的指针和数据 度, 如果 JNI 有和 C 指针对应的数据结构

双摄像头的数据采集,_vDataFrame 的 nframeid 是各 计算, 还是两个累加计算的? 两个摄像头各 从 0 开始计数 对于传 的相机原始数据有什么要求? 因为传 SDK 的数据有做 步解码处理, 所以设计是从相机直接拿到 MJPG 格式的数据传 SDK 即可 ( 建议可以采 VL 去获取相机数据 ) 由于 前采 静态 式配置参数, 所以传递给 SDK 的相机数据需要符合尺 和格式要求, 以免影响数据 成 另外, 为了提 算法准确度, 视频帧率建议 0FPS 前 SDK 持 0*0 和 0*80 两种尺 的图像数据输, 如果有其他尺 的需求可以沟通定制 时序图中的 VL API 是怎么调, 没看到说明?

VL 是 video for linux 的缩写, 是 linux 内部调 相机的 个驱动, 按照 VL 的 API 进 开发即可, 这个官 API 内容基本满 我们的要求, 只要调 caputre 环节就可以了 https://linuxtv.org/downloads/vl-dvb-apis/userspace-api/vl/vl.html 视频数据 定要通过 VL 获取吗? 我们建议是使 VL, 前来说这个是最适合使 的 法, 它是 linux 内核的 法, 效且普适, 通过 VL 法获取相机数据能够达到要求的帧数性能, 并且这个 法是被验证过的 如果有其他 法能够保证性能也可以尝试, 最终能够将数据传给 SDK 即可 8 重 数据, 有时候温差 的情况下传感器会有飘动, 这个影响吗? 我们的算法对重 偏差有 定的容忍度, 我们允许的重 偏差阈值是动态的, 和拿取多重商品有关 重 允许偏差值 = min( 拿取所有商品的重量和 *0.0 + 重 允许的最 偏差值, 重 允许的最 偏差值 ) 重 允许的最 偏差值, 重 允许的最 偏差值, 这两个值可以适当调整, 和称的测试精度有关, 如果称的精度 较低, 可以增加 [0, 0], 但是如果某个重 范围内的商品 较多, 视觉识别不佳的情况下, 可能会牺牲掉部分识别率 9 为什么步骤都是正常但是 成的视频 件没有内容? 在 SDK 内部有静态数据的过滤机制, 如果开发使 的相机捕获到的视频内容没有任何的变化, 便不会有数据被写 到 件中, 如果符合上述情况, 可以尝试在相机前完成 些动作