OSAI SDK接口说明文档 V5.2.0

1.修订记录

日期

版本号

修订说明

修订人

2024.07.15

V5.0.0

1. Windows/Linux/Android多平台统一管理,共享底层SDK。

2. 优化SDK代码,提高效率、用户体验、解决存在的问题。

OSAI

2024.09.15

V5.1.0

  1. 增加称重协议,检测是否可识别状态,检测局域网内的设备列表等接口或功能。

  2. 废弃请求试用期接口。

  3. 修复Windows导出/导入数据不兼容中文路径,初始化时调用初始接口返回初始化失败等问题。

OSAI

2024.11.05

V5.1.7

  1. 导出/导入AI数据增加sku_id参数,可导出/导入单个商品学习数据。

OSAI

2024.12.20

V5.2.0

  1. 修复已知bug。

  2. 增加设置识别范围接口。

  3. 优化算法,识别更准确。

OSAI

2.SDK下载和使用流程说明

2.1 OSAI SDK下载

请联系您的客户经理获取OSAI SDK的下载链接。

2.2 OSAI 不同平台介绍

可支持平台

系统版本要求

部署流程

Windows

Windows 7及以上

  1. 进入程序目录

  2. 双击运行OSAIService.exe程序

Linux

Ubuntu 18.04及以上

  1. 进入程序目录

  2. 执行”./OSAIService.run” 命令启动脚本

Android

Android 7.1及以上

根据SDK压缩包里的《最新SDK获取依赖链接以及需要添加的代码》文档操作

2.3 OSAI SDK使用流程

AI视觉识别技术在生鲜零食等行业已经得到了广泛的应用。为了满足这一需求,我们开发了一套功能强大的AI SDK,并配套提供了一套完整的HTTP服务程序。我们的SDK具备对商品进行学习的能力,能够高效识别出已经学习过的商品。为了方便开发者集成,我们提供了两种标准的接口对接方式,同时根据具体平台特性可能会提供少量特有的使用接口:

  1. HTTP接口方式:通过HTTP接口,您可以便捷地与我们的AI视觉识别服务进行交互,实现商品的学习和识别功能。这种方式具有易于实施和跨平台的优点。

  2. SDK DLL接口:对于想要集成到自己程序的用户,您可以直接对接我们的SDK DLL接口。这提供了更多的自定义选项和灵活性。

2.3.1 应用软件AI识别的流程图

首先,若您想要使用SDK的 AI功能,您需要先对设备进行激活。您可通过调用详细信息接口(osai/sys/details)获取到设备激活状态,对于未激活的设备,需要调用激活接口进行激活。

其次,构建AI系统时,您只需遵循两个主要步骤:识别和学习。具体到业务场景的应用,例如在生鲜行业,这一流程可以通过以下方式实现:

  1. 识别阶段:通过监控电子秤的重量变化来自动触发识别机制。这可以通过设定一个重量阈值来实现,当商品放置到秤上并达到或超过该阈值时,系统将自动启动识别过程。

  2. 学习阶段:在识别出商品后,系统将等待用户的最终确认。用户可以通过点击界面上的正确商品来确认识别结果。一旦用户点击确认,系统将记录这次的识别结果作为学习数据,从而完成学习过程。

通过这种方式,AI系统能够在实际的业务流程中不断学习和优化,进而提高识别的准确性和效率。

具体的流程图如下图所示:

Windows AI SDK服务流程图-v14.drawio (1)

2.3.2 设置识别秤盘区域图像的坐标范围

为了提升AI系统的识别准确性,我们建议对图像中秤盘区域的坐标范围进行精确设置。这一设置的目的是为了最小化外部因素的干扰,确保AI能够更加专注于识别秤盘上的物体。

具体操作时,您应当定义一个矩形区域,这个区域应当足够大,以刚好覆盖秤盘,排除其他不必要的背景和物体。

如图中所示,绿框标识的区域即为推荐的坐标范围。通过精确设置这一区域,可以显著提高AI在实际应用中的识别效率和准确性。

微信截图_20240603165345

3.HTTP接口说明

注:以下HTTP接口请求地址是:127.0.0.1:47000,WebSocket接口请求地址是:127.0.0.1:47001,对于OSAIService服务程序,通过环境变量USE_DEVICE=CPU/NPU/GPU进行设置设备类型,若不设置,则会默认搜索可用NPU/GPU

3.1 GET:sys/version(获取版本号)

接口名

/osai/sys/version

功能说明

获取版本号信息。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

version

版本信息

sdk_version

AI SDK版本号

model_version

AI模型版本号

返回示例

{

"code": 1,

"msg": "GetVersion success!",

"version": {

"sdk_version": "5.0.0",

"model_version": "231221"

}

}

3.2 GET:sys/init(初始化)

接口名

/osai/sys/init

功能说明

初始化服务,该接口在启动服务程序时会自动调用。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "Init success!"

}

3.3 GET:sys/exit(退出程序)

接口名

/osai/sys/exit

功能说明

退出服务进程。建议通过该接口来退出程序,避免出现数据丢失等异常问题。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "Exit success!"

}

3.4 GET:sys/details(获取详细信息)

接口名

/osai/sys/details

功能说明

获取详细信息:设备号,激活码,设备过期时间,门店信息等。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,

0: 未知错误,

1: 已激活,请注意,已激活过的设备,在断网状态下也会返回该状态码,

1001: 未初始化,

1008: 初始化中,

2002: 设备未激活,

2005: 已过期,

2007: 试用期,

2008: 试用期已结束,

6001: 与服务端通信异常,可能是由于断网或连接超时等原因造成的。请注意,未激活或已过期的设备在断网情况下也会返回该状态码

msg

状态描述

deviceinfo

设备信息

cdkey

激活码

device_id

设备号

deadline

设备过期时间,若为空代表永久使用

storename

门店名称

storecontact

联系人

storemobile

联系电话

返回示例

{

"code": 1,

"msg": "GetDetails success!",

"deviceinfo": {

"cdkey": "04HW51ULV9MEDPRMBVJXXX",

"device_id": "13829662055196697XXX",

"deadline": "2029-09-21",

"storename": "XXX",

"storecontact": "XXX",

"storemobile": "XXX"

}

}

3.5 GET:sys/setshopinfo(设置门店信息)

接口名

/osai/sys/setshopinfo

功能说明

设置门店信息,可设置门店名称、联系人、联系电话。

请求参数

参数名

参数说明

name

门店名称

contact

联系人

mobile

联系电话

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SetShopInfo success!"

}

3.6 GET:sys/upgradeinfo(获取程序升级信息)

接口名

/osai/sys/upgradeinfo

功能说明

获取程序升级信息,最新版本号,下载链接等。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

ver

最新版本号

url

下载链接

mode

升级模式,1: 强制升级,2: 自动升级,3: 弹窗提示升级,可根据mode定义对应的升级策略

返回示例

{

"code": 1,

"msg": "UpgradeInfo success!",

"ver": "a.b.c",

"url": "http://dl.tx.cdn.osai.cc/update/xxx_update_a.b.c_only.zip",

"mode": "3"

}

3.7 GET:sys/upgrade(升级服务程序)

接口名

/osai/sys/upgrade

功能说明

升级服务程序。可通过调用UpgradeInfo获取升级url链接。

请求参数

参数名

参数说明

url

升级包下载地址

响应参数

参数名

参数说明

返回示例

3.8 GET:sys/modelinfo(获取模型升级信息)

接口名

/osai/sys/modelinfo

功能说明

获取模型升级信息,查询是否存在可升级的模型,若设备联网,则获取云端模型升级信息,如果不是最新模型,则从云端拉取最新模型并更新;如果设备处于离线状态,则查询本地是否存在可升级模型并更新。请注意,模型文件为sdk目录下的retrieval_latest.ai文件。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

result

检查结果,-2: 异常,-1: AI未初始化,0: 不需要升级,1: 符合升级要求

返回示例

{

"code": 1,

"msg": "New model ready for upgrade.",

"result": 1

}

3.9 GET:sys/upgrademodel(升级模型)

接口名

/osai/sys/upgrademodel

功能说明

升级算法模型。请注意,AI模型升级时会自动进行重新学习,期间无法使用AI识别功能,可使用/osai/ai/gallery/batchlearn接口获取进度(0-100)。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功,1007: 重新学习中

msg

状态描述

result

升级结果,-1: 异常,0: 升级失败,1: 开始升级,2: 升级成功

estimate

预计剩余时间

返回示例

{

"code": 1,

"msg": "Model start upgrade.",

"result": 1,

"estimate": "1m 51s"

}

3.10 GET:sys/thmbyname(获取缩略图)

接口名

/osai/sys/thmbyname

功能说明

获取线上展示商品的缩略图,可以通过传入商品名称来获取相关的缩略图。

请求参数

参数名

参数说明

name

商品图片名称

lang

【非必选】语言,zh: 简体中文名称,en: 英文名称,tw: 繁体中文名称,默认为zh

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "ThmbyName success!",

"data": [

"OSAIIcon/苹果.jpg"

]

}

3.11 POST:sys/thmbymultiname(批量获取缩略图)

接口名

/osai/sys/thmbymultiname

功能说明

获取线上展示商品的缩略图,可以通过传入多个商品名称来获取相关的缩略图。

请求参数

参数名

参数说明

name

商品图片名称,多个商品以”|”分割

lang

【非必选】语言,zh: 简体中文名称,en: 英文名称,tw: 繁体中文名称,默认为zh

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

请求示例

http://127.0.0.1:47000/osai/sys/thmbymultiname?lang=zh

请求头中应配置Content-Type:application/json

{

"name":["苹果|香蕉|梨|菠萝"]

}

返回示例

{

"code": 1,

"msg": "ThmbyMultiName success!",

"data": {

"苹果": [

"OSAIIcon/苹果.jpg"

],

"香蕉": [

"OSAIIcon/香蕉.jpg"

],

"梨": [

"OSAIIcon/梨.jpg"

],

"菠萝": [

"OSAIIcon/菠萝.jpg"

]

}

}

3.12 GET:sys/onlinedevices(查找在线设备)

接口名

/osai/sys/onlinedevices

功能说明

检测局域网内在线设备的ip地址。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

devices

局域网内可通信的ip地址

返回示例

{

"code": 1,

"msg": "OnlineDevices success!",

"devices": [

"192.168.31.219",

"192.168.31.23",

"192.168.31.100",

"192.168.31.208"

]

}

3.13 GET:sys/codestatus(获取激活码状态)

接口名

/osai/sys/codestatus

功能说明

检测激活码是否被使用。

请求参数

参数名

参数说明

actcode

激活码

响应参数

参数名

参数说明·

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

code_isused

传入的激活码是否已使用,0: 未使用,1: 已使用

返回示例

{

"code": 1,

"msg": "CodeStatus success!",

"code_isused": 1

}

3.14 GET:auth/setvid(设置客户专属ID)

接口名

/osai/auth/setvid

功能说明

设置客户专属ID,该ID将对已配置的设备施加激活码使用限制,即只有隶属于该VID下的激活码才能用来激活该设备。如需获取具体的ID值,请联系OSAI的商务团队。请注意,在激活产品或申请试用期之前,您需要先调用此接口。

请求参数

参数名

参数说明

vid

客户专属ID

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SetVID success!"

}

3.15 GET:auth/activate(激活设备)

接口名

/osai/auth/activate

功能说明

激活当前设备,请注意,未激活的设备将会影响AI功能的使用。

请求参数

参数名

参数说明

code

激活码

name

门店名称

contact

联系人

phone

联系电话

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "Activate success!",

}

3.16 GET:auth/qrcode(获取激活二维码)

接口名

/osai/auth/qrcode

功能说明

获取经销商/普通用户扫码激活用的二维码图片。

请求参数

参数名

参数说明

type

获取类型参数,可设置为agent或user。当设置为agent时,指代经销商;设置为user时,则指代普通用户

响应参数

参数名

参数说明

返回示例

3.17 GET:auth/unbind(解绑当前设备)

接口名

/osai/auth/unbind

功能说明

解绑当前设备,意味着撤销其激活状态。请注意,一旦设备被解绑,其AI功能的可用性将受到影响。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "Unbind success!"

}

3.18 GET:cam/list(获取摄像头列表)

接口名

/osai/cam/list

功能说明

获取本设备的摄像头列表以及正在使用的摄像头。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

selected

当前正在使用的摄像头信息

id

摄像头的id

name

摄像头的名字

symlink

摄像头的路径

camlist

摄像头列表信息

返回示例

{

"code": 1,

"msg": "CameraList success!",

"selected": {

"id": 0,

"name": "HIK 1080P CAMERA_0",

"symlink": "\\\\?\\usb#vid_2bdf&pid_0284&mi_00#6&5d2db91&2&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"

},

"camlist": [

{

"id": 0,

"name": "HIK 1080P CAMERA_0",

"symlink": "\\\\?\\usb#vid_2bdf&pid_0284&mi_00#6&5d2db91&2&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"

}

],

"cameralist": [

{

"id": 0,

"name": "HIK 1080P CAMERA_0",

"symlink": "\\\\?\\usb#vid_2bdf&pid_0284&mi_00#6&5d2db91&2&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"

}

]

}

3.19 GET:cam/open(打开摄像头)

接口名

/osai/cam/open

功能说明

打开指定摄像头,请注意,在程序启动的时候会尝试打开第一个摄像头,且该接口自带保存功能,下次启动时会打开上次打开的摄像头。

请求参数

参数名

参数说明

id

【非必选】摄像头的id标识,可从/osai/cam/list接口获取,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "OpenCamera success!"

}

3.20 GET:cam/setresolution(设置摄像头分辨率)

接口名

/osai/cam/setresolution

功能说明

设置摄像头分辨率。请注意,当设置分辨率超出摄像头支持最大分辨率时,自动设置为摄像头支持的最大分辨率,且该接口自带保存功能,下次启动时会设置上次设置的分辨率。

请求参数

参数名

参数说明

width

分辨率宽度

height

分辨率高度

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SetCameraResolution success!"

}

3.21 GET:cam/capture(获取视频当前帧数据)

接口名

/osai/cam/capture

功能说明

获取摄像头当前实时帧的一张图片。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

返回示例

capture

3.22 GET:cam/livestream(获取视频流数据)

接口名

/osai/cam/livestream

功能说明

获取摄像头当前实时的图像帧,并以视频流的形式返回。不建议您在实际使用过程中调用该接口,因为该接口会占用大量系统资源,影响识别速度。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

返回示例

capture

3.23 GET:cam/croparea(获取AI可识别区域)

接口名

/osai/cam/croparea

功能说明

获取AI可识别区域参数。请注意返回的渲染图像的宽高是否和UI界面上的渲染图像一致,若不一致需要进行对应的换算。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

x

渲染图像选定矩形区域左上角坐标x

y

渲染图像选定矩形区域左上角坐标y

w

渲染图像选定矩形区域宽度

h

渲染图像选定矩形区域高度

topleft_x

渲染图像选定梯形区域左上角坐标x

topleft_y

渲染图像选定梯形区域左上角坐标y

topright_x

渲染图像选定梯形区域右上角坐标x

topright_y

渲染图像选定梯形区域右上角坐标y

bottomleft_x

渲染图像选定梯形区域左下角坐标x

bottomleft_y

渲染图像选定梯形区域左下角坐标y

bottomright_x

渲染图像选定梯形区域右下角坐标x

bottomright_y

渲染图像选定梯形区域右下角坐标y

img_w

渲染图像的宽度

img_h

渲染图像的高度

返回示例

{

"code": 1,

"msg": "CameraCropArea success!",

"x": 0,

"y": 0,

"w": 0,

"h": 0,

"topleft_x": 50,

"topleft_y": 50,

"topright_x": 150,

"topright_y": 50,

"bottomleft_x": 10,

"bottomleft_y": 300,

"bottomright_x": 190,

"bottomright_y": 300,

"img_w": 640,

"img_h": 480,

"cam_w": 640,

"cam_h": 480,

"area_w": 640,

"area_h": 480

}

3.24 GET:cam/setcroparea(设置AI可识别区域)

接口名

/osai/cam/setcroparea

功能说明

设置AI识别区域参数:此接口允许用户通过指定区域的位置和大小来定义AI系统的识别范围,AI将只会在定义的区域内执行识别任务,请注意,渲染图像就是贵司应用软件上的用来设置识别区域的图像,且该接口自带保存功能,下次启动时会设置上次设置的识别区域。

我们提供了矩形区域和梯形区域两种设置方式,请选择适合您的方式输入对应的参数,若您将两种方式的参数都传入,我们将优先采取梯形区域的方式去设置识别区域。

请求参数

参数名

参数说明

x

渲染图像选定矩形区域左上角坐标x

y

渲染图像选定矩形区域左上角坐标y

w

渲染图像选定矩形区域宽度

h

渲染图像选定矩形区域高度

topleft_x

渲染图像选定梯形区域左上角坐标x

topleft_y

渲染图像选定梯形区域左上角坐标y

topright_x

渲染图像选定梯形区域右上角坐标x

topright_y

渲染图像选定梯形区域右上角坐标y

bottomleft_x

渲染图像选定梯形区域左下角坐标x

bottomleft_y

渲染图像选定梯形区域左下角坐标y

bottomright_x

渲染图像选定梯形区域右下角坐标x

bottomright_y

渲染图像选定梯形区域右下角坐标y

img_w

渲染图像的宽度

img_h

渲染图像的高度

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SetCameraCropArea success!"

}

3.25 GET:ai/visrecimg(获取识别图像)

接口名

/osai/ai/visrecimg

功能说明

获取本次识别的图片,在多目标识别场景中,您还可以通过传入bbox参数,在图片上高亮显示出的多个目标的商品框。

请求参数

参数名

参数说明

bbox

【非必选】是否增加bbox框,默认不增加

skus

【非必选】系统将自动将bbox框中的SKU编号转换为实际的商品名称,格式为"11:apple;12:orange",默认为空

响应参数

参数名

参数说明

返回示例

visrecimg

3.26 GET:ai/recognition(AI识别)

接口名

/osai/ai/recognition

功能说明

AI商品识别:系统将返回本次识别的结果。

请求参数

参数名

参数说明

top

【非必选】最大输出数量,默认为0

save_img

【非必选】是否保存本次识别图片,默认为0。若设置为1,则程序会在返回字段 filename 中提供图片的名称,并将图片保存在程序所在目录的 OSAITemp文件夹下

skuid_range

【非必选】识别范围列表,若设置识别范围,AI算法将在该范围内查找识别结果,注意,该参数只在该次识别请求有效。

timeout

【非必选】当设置识别超时值后,若识别过程耗时超过这一设定值,系统将返回一个超时错误。若该值设为0,则表示不进行超时判断。默认情况下,系统会预设一个超时值

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

used_time

本次识别所花费的时间,单位为毫秒

filename

本次识别图片名称

result

识别结果记录

index

第index次的结果

rank

识别结果列表

id

本次识别id,在快速学习模式时仅有的参数

返回示例

{

"code": 1,

"msg": "AiRecognition success, extract feat time:15, capture frame time:5",

"sku_ids": ["11"],

"used_time": 31,

"filename": "osai_temp.png",

"result": [

{

"index": 0,

"rank": ["11" ]

}

]

}

{

"code": 1,

"msg": "SetLearnMode success!"

}

{

"code": 1,

"msg": "AiFastRecognition success!",

"id": 0

}

3.27 GET:ai/autotriggerrec(自动触发识别接口)

接口名

/osai/ai/autotriggerrec

功能说明

当启用该接口,在IsReadyState检测到可识别时,自动触发识别接口,识别结果将通过websocket服务的方式推送,默认为0。

请求参数

参数名

参数说明

close

【非必选】当置为1时,将关闭自动调用识别接口,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "AutoTriggerRec success!"

}

3.28 GET:ai/isreadystate(获取是否准备触发识别状态)

接口名

/osai/ai/isreadystate

功能说明

获取是否准备触发识别状态,该接口将根据重量判断是否可以触发识别。

请求参数

参数名

参数说明

weight

重量,单位g

is_steady

当前是否稳重,1为稳重,0为不稳重

rec_after_steady

【非必选】稳重后识别,当置为1时,代表只有重量稳重后才会触发识别,默认为0

start_from_zero

【非必选】归零后识别,当置为1时,代表只有重量归过零才允许触发识别,否则在上次学习后的稳重重量和当前稳重重量相差100g时就允许触发识别,默认为0

max_check_time

【非必选】最大检测时长,单位ms,默认为120

min_rec_weight

【非必选】最小识别重量,单位g,默认为20

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

is_ready

true:可触发识别,false:不可触发识别

返回示例

{

"code": 1,

"msg": "IsReadyState success!",

"is_ready": false

}

3.29 GET:ai/autorec(开启自动识别)

接口名

/osai/ai/autorec

功能说明

此接口将开启自动识别,我们将自动检测画面状态,当有东西放置秤盘上时,会自动触发识别,并将识别结果通过websocket服务的方式推送。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": " AutoRec success!"

}

3.30 GET:ai/emptypandetection(开启空秤盘检测)

接口名

/osai/ai/emptypandetection

功能说明

此接口将开启空秤盘检测功能,我们将会检测当前识别结果是否为空秤盘,若为空秤盘则会返回空识别结果。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "EmptyPanDetection success!"

}

3.31 GET:ai/gallery/setlearnmode(设置学习模式)

接口名

/osai/ai/gallery/setlearnmode

功能说明

系统提供两种学习模式:快速学习模式和标准学习模式。在快速学习模式下,系统可以对一个商品进行多次识别,然后将这些识别数据统一进行学习。而标准学习模式则是在对一个商品完成一次识别后,立即进行学习。请注意,默认情况下为标准学习模式。

请求参数

参数名

参数说明

learnmode

设置学习模式,fast: 快速学习模式;normal: 标准学习模式

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SetLearnMode success!"

}

3.32 GET:ai/gallery/learn(AI学习)

接口名

/osai/ai/gallery/learn

功能说明

AI学习商品:系统将在识别后将结果标记为该SKU的学习数据,请注意,在学习之前需要先进行一次识别。在您的应用场景仅需要进行识别而不涉及学习时,我们推荐您依然调用此接口,并设置 is_learn 参数为 0。这样可以帮助确保AI系统的稳定性。

请求参数

参数名

参数说明

sku_id

商品编号

rec_ids

在快速学习模式下,系统允许用户指定一个需要学习的识别ID列表。这个列表以数组的格式提供,例如: [0,1,2],其中每个ID值都是在识别过程中获取的

productname

【非必选】商品编号的名称,默认为空

bool is_learn

【非必选】当置为0时,代表不将该次学习结果载入AI数据库,默认为1。该参数适用于“只识别不学习”的场景

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "AiLearning success!"

}

{

"code": 1,

"msg": "SetLearnMode success!"

}

{

"code": 1,

"msg": "AiFastLearning success!"

}

3.33 GET:ai/gallery/list(获取AI已学习列表)

接口名

/osai/ai/gallery/list

功能说明

获取已学习的SKU列表。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

sku_ids

已学习的商品编号列表

返回示例

{

"code": 1,

"msg": "AiGalleryList success!",

"sku_ids": [

"11"

]

}

3.34 GET:ai/gallery/batchlearn(批处理AI学习)

接口名

/osai/ai/gallery/batchlearn

功能说明

进行批量图片学习,用户只需指定一个目录,系统便会自动学习该目录中的所有图片。

请求参数

参数名

参数说明

path

图片集的父目录,图片目录结构为OSAIBackup/00001/xxx.png,

OSAIBackup/00002/xxx.png,

其中一级目录为父目录,二级目录是以商品编号为命名的目录,三级目录存放对应的图片

count

【非必选】限制每个文件夹中可学习的最大图片数量,默认为0,意味着无限制,即学习该文件夹内所有图片

return_progress

【非必选】若设为1,则返回当前进程进度条值,不存在进程返回0,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

progress

进度条值,范围0-100,单位: %

estimate

预计剩余时间

返回示例

{

"code": 1,

"msg": "AiBatchLearn success!"

}

{

"code": 1,

"msg": "AiBatchLearnProcess success!",

"progress": 100,

"estimate": "0"

}

3.35 GET:ai/gallery/deletesku(AI删除商品)

接口名

/osai/ai/gallery/deletesku

功能说明

AI删除商品:系统将删除该SKU的学习数据。

请求参数

参数名

参数说明

sku_id

删除的商品编号

count

【非必选】删除选定商品编号最近的count条记录,0代表所有,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "AiGalleryDelete success!"

}

3.36 GET:ai/gallery/clear(AI清空学习数据)

接口名

/osai/ai/gallery/clear

功能说明

清空所有SKU的学习数据。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "AiGalleryClear success!"

}

3.37 POST:ai/gallery/prelearn (AI预学习)

接口名

/osai/ai/gallery/prelearn

功能说明

AI预学习功能,系统通过学习预定义的商品图片,并匹配商品库的数据,提高初始使用阶段的识别准确率。

请求参数

参数名

参数说明

productlist

商品列表

rule

【非必选】匹配规则,0: 精准匹配, 1: 模糊匹配,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

返回状态描述,

>=0: 成功预学习商品数量,

-1: 参数为空,

-2: 算法未激活

请求示例

http://127.0.0.1:47000/osai/ai/gallery/prelearn

请求头中应配置Content-Type:application/json

{

"rule": 0,

"productlist": [{

"name": "白菜",

"sku": "123456"

}]

}

返回示例

{

"code": 1,

"msg": "2"

}

3.38 POST:ai/gallery/filterskus(过滤识别数据)

接口名

/osai/ai/gallery/filterskus

功能说明

过滤识别数据,系统将过滤并排除那些不属于现有商品库的识别数据,请注意,这些数据并不会被删除。

请求参数

参数名

参数说明

keep_skus

保留的商品编号列表,不在该列表的商品编号的学习数据将会被过滤掉

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

请求示例

http://127.0.0.1:47000/osai/ai/gallery/filterskus

请求头中应配置Content-Type:application/json

{

"keep_skus": ["80001","80002","1001"]

}

返回示例

{

"code": 1,

"msg": "KeepSkus success!"

}

3.39 POST:ai/gallery/range(设置识别范围)

接口名

/osai/ai/gallery/range

功能说明

设置识别范围,AI算法将在该范围内查找识别结果,注意,该接口会覆盖上一次的设置范围,重启算法后需要重新设置识别范围。

请求参数

参数名

参数说明

skuid_range

识别范围列表

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "AiGalleryRange success!"

}

3.40 GET:ai/gallery/export (导出AI数据)

接口名

/osai/ai/gallery/export

功能说明

导出AI数据文件,您可以导出AI数据文件,并将它们存储在其他设备上,若您仅需要单个sku的AI数据,您可传入sku_id参数获取,但我们不建议这么操作。

请求参数

参数名

参数说明

packpath

导出文件夹路径,若不提供文件名,将使用默认文件名,如D:/OSAI 或 D:/OSAI/test.zip,请注意,文件名必须是“.zip”结尾

sku_id

【非必选】商品编号,仅导出该sku的AI数据,默认文件名为{sku_id}.feature。

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

filepath

导出文件的路径,空代表导出失败

返回示例

{

"code": 1,

"msg": "AiGalleryExport success!",

"filepath": "D:/feature_20290821_173637.zip"

}

3.41 GET:ai/gallery/restore(导入AI数据)

接口名

/osai/ai/gallery/restore

功能说明

导入AI数据文件,在其他设备上完成导出后,您可以将这些AI数据文件导入到本设备上,若您仅需要导入单个sku的AI数据,您可传入.feature的文件,但我们不建议这么操作。

请求参数

参数名

参数说明

packpath

导入文件路径,必须是zip包

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

result

导入结果,

>=0: 表示学习数量,

-1: 算法未激活,

-2: 文件不存在,

-3: 解压失败,

-4: 版本不一致

返回示例

{

"code": 1,

"msg": "AiGalleryRestore success!",

"result": 999

}

3.42 GET:ai/gallery/syncall(同步AI数据)

接口名

/osai/ai/gallery/syncall

功能说明

此接口允许用户通过指定目标机器的IP地址,将AI数据发送到该机器。这适用于需要在不同设备间同步或迁移AI数据的场景。

请求参数

参数名

参数说明

ip

目标ip地址

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SyncAll success!"

}

3.43 GET:ai/gallery/synconlearn(数据共享)

接口名

/osai/ai/gallery/synconlearn

功能说明

此接口用于在线实时共享AI数据。当该功能被启动时,每当系统添加一条新的AI数据时,该数据将自动发送给所有开启该功能的客户端。这种方式适用于需要即时同步最新AI数据的应用场景,请注意,该功能默认是关闭的,且该接口自带保存功能,若上次已开启该功能,则启动时会自动打开。

请求参数

参数名

参数说明

enable

开启或关闭该功能,1: 开启,0: 关闭

port

【非必选】端口号,默认40064

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "SyncOnLearn success!"

}

3.44 GET:ai/gallery/synconlearnstatus(数据共享状态)

接口名

/osai/ai/gallery/synconlearnstatus

功能说明

获取数据共享功能状态,查询是否启动了该功能。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

is_on

true: 已启动,false: 未启动

返回示例

{

"code": 1,

"msg": "SyncOnLearnStatus success!",

"is_on": false

}

3.45 GET:serial/open(打开串口)

接口名

/osai/serial/open

功能说明

打开串口。

请求参数

参数名

参数说明

dev_name

串口设备名称,例如COM2

baud_rate

【非必选】波特率,默认9600

parity

【非必选】校验位,默认为0

byte_size

【非必选】数据位,默认为8

stop_bits

【非必选】停止位,默认为1

protocol_type

秤的协议类型,支持的协议类型可调用serial/getprotocol?lang=en 接口获取

async_read

【非必选】当置为1时,代表异步读取串口数据,结果将通过websocket服务的方式推送,默认为0

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "OpenSerial success!"

}

3.46 GET:serial/close(关闭串口)

接口名

/osai/serial/close

功能说明

关闭串口。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": " CloseSerial success!"

}

3.47 GET:serial/read(读取串口数据)

接口名

/osai/serial/read

功能说明

读取串口数据。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

data

取重信息

Status

取重状态,"NORM": 正常

steady

稳定状态,true: 稳定,false: 不稳定

tare

皮重

unit

重量单位

weight

重量

msg

状态描述

返回示例

{ "code": 1,

"data": {

"Status": "NORM",

"steady": ture,

"tare": "+000.000",

"unit": "kg",

"weight": "+000.150"

},

"msg": "ReadSerial success!"

}

3.48 GET:serial/zero(归零)

接口名

/osai/serial/zero

功能说明

归零。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code":1,

"msg":"ZeroSerial success!"

}

3.49 GET:serial/peel(去皮)

接口名

/osai/serial/peel

功能说明

去皮。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code":1,

"msg":"PeelSerial success!"

}

3.50 GET:serial/exitasyncread(退出异步读取)

接口名

/osai/serial/exitasyncread

功能说明

退出异步读取串口数据。

请求参数

参数名

参数说明

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code":1,

"msg":"ExitAsyncReadSerialData success!"

}

3.51 GET:serial/getprotocol(获取可支持的协议类型)

接口名

/osai/serial/getprotocol

功能说明

获取可支持的协议类型。

请求参数

参数名

参数说明

lang

【非必选】语言,zh: 简体中文名称,en: 英文名称,默认为zh

响应参数

参数名

参数说明

code

状态码,0: 未知错误,1: 操作成功

msg

状态描述

返回示例

{

"code": 1,

"msg": "GetSerialProtocol success!",

"protocol": [

"TLD",

"DBG",

"DH",

"DJ",

"LF",

"YT",

"ZKYT",

"WD",

"RD",

"TH",

"XS",

"BC",

"QH"

]

}

3.52 状态码定义

默认状态码

说明

0

默认的未知错误

1

默认的操作成功

200(旧版本)

操作成功

程序相关状态码

说明

1001

程序未初始化

1002

程序初始化失败

1003

接口参数错误

1004

程序版本信息异常

1005

修改配置信息失败

1006

不支持的操作

1007

重新学习中

1008

初始化中

设备相关状态码

说明

2001

新旧SN替换错误

2002

设备未激活

2003

设备激活失败

2004

设备信息异常

2005

设备已过期

2006

系统时间异常

2007

设备处于试用期

2008

设备试用期已结束

so库相关状态码

说明

3001

SO库未加载

3003

SO库加载失败

3003

SO库未初始化

3004

SO库初始化失败

3005

识别异常

3006

无识别记录

识别模型相关状态码

说明

3600

识别模型出错

3601

识别模型加密库出错

3602

识别模型加速库出错

3603

识别模型预处理阶段出错

3604

识别模型后处理阶段出错

3605

识别模型传入参数错误

3606

识别模型内存错误

3607

识别模型数据错误

3608

识别模型调用流程错误

3609

识别模型文件错误

3610

识别模型键不存在错误

匹配算法相关状态码

说明

3801

匹配算法需要同步商品数据

3802

匹配算法传入参数错误

3803

匹配算法内存错误

3804

匹配算法数据错误

3805

匹配算法调用流程错误

3806

匹配算法文件错误

相机相关状态码

说明

4001

相机异常

4002

图像处理异常

商品相关状态码

说明

5001

初始化商品数据异常

5002

初始化ICON匹配服务异常

5003

商品ICON匹配异常

5004

商品不存在

5005

商品已锁定

5006

商品信息修改失败

文件操作相关状态码

说明

8001

文件删除异常

8002

文件复制异常

8003

文件重命名异常

8004

文件解压异常

8005

文件不存在

8006

文件打开异常

AI相关状态码

说明

9001

特征值获取异常

9002

AI模型加载异常

9003

AI模型版本不一致

4.SDK DLL接口说明

注:以下SDK DLL接口的命名空间是:osai

其他文档未收录的非正式接口可能不稳定

4.1 RegIsReadyStateCallback(注册识别回调函数)

接口名

void RegIsReadyStateCallback(IsReadyStateCallback callback);

typedef void (*IsReadyStateCallback)(const char* result);

功能说明

注册识别回调函数,若注册了该回调函数,则在IsReadyState检测到可识别时,自动调用识别接口并执行该回调函数(异步操作)

输入参数

参数名

参数说明

IsReadyStateCallback callback

识别结果回调函数

输出参数

参数类型

参数说明

bool

TRUE: 是 FALSE: 否

4.2 SetDevice(设置设备类型)

接口名

bool SetDevice(const char* device);

功能说明

设置设备类型,AI将根据对应的设备选择最优性能的方式进行推理计算,如果不设置,会默认搜索可用NPU/GPU。请注意,该接口需要在初始化之前调用。

输入参数

参数名

参数说明

const char* device

设备类型,可输入”cpu”, “npu”, “gpu”

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.3 GetSdkVersion(获取SDK版本号)

接口名

const char* GetSdkVersion();

功能说明

获取SDK版本号信息。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

const char*

SDK版本号

4.4 GetModelVersion(获取模型版本号)

接口名

const char* GetModelVersion();

功能说明

获取当前使用的AI模型版本号信息。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

const char*

AI模型版本号

4.5 OsaiInit(SDK初始化)

接口名

bool OsaiInit(const char* vid = "");

功能说明

SDK初始化。

输入参数

参数名

参数说明

const char* vid

vid,详细可看SetVid接口,默认为空

输出参数

参数类型

参数说明

bool

TRUE: 初始化成功,FALSE: 初始化失败

4.6 OsaiUnInit(SDK释放)

接口名

bool OsaiUnInit();

功能说明

SDK释放。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 释放成功,FALSE: 释放失败

4.7 GetDeviceInfo(获取详细信息)

接口名

bool GetDeviceInfo(DeviceInfo& deviceInfo);

功能说明

获取详细信息:设备号,激活码,设备过期时间,门店信息等。

输入参数

参数名

参数说明

DeviceInfo& deviceInfo

设备信息,DeviceInfo数据类型见4.57复杂数据类型描述

输出参数

参数类型

参数说明

bool

TRUE: 获取成功,FALSE: 获取失败

4.8 SetShopInfo(设置门店信息)

接口名

bool SetShopInfo(const char* name, const char* contact, const char* phone);

功能说明

设置门店信息,可设置门店名称、联系人、联系电话。

输入参数

参数名

参数说明

const char* name

门店名称

const char* contact

联系人

const char* phone

联系电话

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.9 UpgradeInfo(获取程序升级信息)

接口名

bool UpgradeInfo(char* ver, char* url, char* mode, bool model_ver = false);

功能说明

获取程序升级信息:最新版本号,下载链接等。

输入参数

参数名

参数说明

char* ver

门店名称

char* url

联系人

char* mode

联系电话

bool model_ver

是否请求算法模型的升级信息。默认为False代表获取SDK的升级信息,True代表获取算法模型的升级信息

输出参数

参数类型

参数说明

bool

TRUE: 获取成功,FALSE: 获取失败

4.10 UpgradeProgram(升级服务程序)

接口名

bool UpgradeProgram(const char* url);

功能说明

升级程序。可通过调用UpgradeInfo获取升级url链接。

输入参数

参数名

参数说明

const char* url

升级链接

输出参数

参数类型

参数说明

bool

TRUE: 升级成功,FALSE: 升级失败

4.11 CheckNewModelUpgrade(获取模型升级信息)

接口名

int CheckNewModelUpgrade();

功能说明

获取模型升级信息,查询是否存在可升级的模型,若设备联网,则获取云端模型升级信息,如果不是最新模型,则从云端拉取最新模型并更新;如果设备处于离线状态,则查询本地是否存在可升级模型并更新。请注意,模型文件为sdk目录下的retrieval_latest.ai文件。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

int

状态码,

-2: 异常,

-1: AI未初始化,

0: 不需要更新,

1: 符合更新要求

4.12 UpgradeModel(升级模型)

接口名

int UpgradeModel();

功能说明

升级算法模型。请注意,AI模型升级时会自动进行重新学习,期间无法使用AI识别功能,可使用AiGalleryBatchLearnProgress接口获取进度(0-100)。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

int

状态码,

-1: 异常,

0: 升级失败,

1: 开始升级,

2: 升级成功

4.13 ThmbyMultiName(获取缩略图)

接口名

const char* ThmbyMultiName(const char* names, const char* lang);

功能说明

获取线上展示商品的缩略图,可以通过传入多个商品名称来获取相关的缩略图。

输入参数

参数名

参数说明

names

商品名称,若有多个通过'|'分割,例如:"苹果|香蕉|梨"

lang

zh: 简体中文名称,en: 英文名称,tw: 繁体中文名称

输出参数

参数类型

参数说明

const char*

图片路径,有多个路径的通过';'分割,若商品名称有多个,通过'|'分割,例如:"苹果1.jpg;苹果2.jpg|香蕉.jpg|梨.jpg"

4.14 FindOnlineDevices(查找在线设备)

接口名

const char* FindOnlineDevices(const char* type = "");

功能说明

检测局域网内在线设备的ip地址。

输入参数

参数名

参数说明

type

根据类型获取,默认为空,获取所有(目前还无其他类型)

输出参数

参数类型

参数说明

const char*

在线设备ip, 若有多个,通过'|'分割

4.15 SetVid(设置客户专属ID)

接口名

bool SetVid(const char* vid);

功能说明

设置客户专属ID,该ID将对已配置的设备施加激活码使用限制。如需获取具体的ID值,请联系OSAI的商务团队。请注意,在激活产品或申请试用期之前,您需要先调用此接口。

输入参数

参数名

参数说明

const char* vid

客户专属ID,请联系OSAI商务人员获取

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.16 DeviceActivate(激活设备)

接口名

bool DeviceActivate(const char* name, const char* contact, const char* phone);

功能说明

设备激活,请注意,未激活的设备将会影响AI功能的使用。

输入参数

参数名

参数说明

const char* code

激活码

const char* name

门店名称

const char* contact

联系人

const char* phone

联系电话

输出参数

参数类型

参数说明

bool

TRUE: 激活成功,FALSE: 激活失败

4.17 DeviceIsActivated(获取设备激活状态)

接口名

int DeviceIsActivated();

功能说明

获取设备激活状态。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

int

激活状态,

3: 试用过期 (不需要解绑),

2: 试用中 (不需要解绑),

1: 已激活 (不需要解绑),

0: 未激活(可以解绑),

-1: 已过期(可以解绑),

-2: 设备号与缓存不一致(可以解绑),

-3: AI未初始化 (不需要解绑),

-4: 网络异常,本地缓存读取异常 (不需要解绑),

-5: 缓存信息已过期,需要重新联网获取 (不需要解绑),

-6: 初始化中 (不需要解绑)

4.18 GetQRCode(获取激活二维码)

接口名

uint8_t* GetQRCode(int* len, const char* user_type);

功能说明

获取经销商或代理商/普通用户扫码激活用的二维码。

输入参数

参数名

参数说明

int* len

二维码数据流大小

const char* user_type

用户类型,"agent"为经销商或代理商,"user"为普通用户

输出参数

参数类型

参数说明

unsigned char*

二维码数据流

4.19 Unbind(解绑当前设备)

接口名

bool Unbind();

功能说明

解绑当前设备,意味着撤销其激活状态。请注意,一旦设备被解绑,其AI功能的可用性将受到影响。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 解绑成功,FALSE: 解绑失败

4.20 GetCameraInfo(获取摄像头列表)

接口名

CameraInfo* GetCameraInfo(int* len);

功能说明

获取本设备的摄像头列表。

输入参数

参数名

参数说明

int* len

摄像头信息列表大小

输出参数

参数类型

参数说明

CameraInfo*

摄像头信息列表,CameraInfo数据类型4.57复杂数据类型描述

4.21 OpenCamera(打开摄像头)

接口名

bool OpenCamera(int id = 0);

功能说明

打开指定摄像头,请注意,在程序启动的时候会尝试打开第一个摄像头,且该接口自带保存功能,下次启动时会打开上次打开的摄像头。

输入参数

参数名

参数说明

int id

摄像头id

输出参数

参数类型

参数说明

bool

TRUE: 打开成功,FALSE: 打开失败

4.22 CloseCamera(关闭摄像头)

接口名

bool CloseCamera();

功能说明

关闭摄像头。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 关闭成功,FALSE: 关闭失败

4.23 SetCameraResolution(设置摄像头分辨率)

接口名

bool SetCameraResolution(int width, int height);

功能说明

设置摄像头分辨率。请注意,当设置分辨率超出摄像头支持最大分辨率时,自动设置为摄像头支持的最大分辨率,且该接口自带保存功能,下次启动时会设置上次设置的分辨率。

输入参数

参数名

参数说明

int width

分辨率宽度

int height

分辨率高度

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.24 GetCameraCurFrame(获取视频当前帧数据)

接口名

uint8_t* GetCameraCurFrame(int* len);

功能说明

获取摄像头当前实时帧的一张图片。

输入参数

参数名

参数说明

int* len

当前实时帧数据流大小

输出参数

参数类型

参数说明

unsigned char*

当前实时帧数据流

4.25 GetCameraArea(获取AI可识别区域)

接口名

XYWHArea GetCameraArea();

功能说明

获取AI可识别区域参数。请注意返回的渲染图像的宽高是否和UI界面上的渲染图像一致,若不一致需要进行对应的换算。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

XYWHArea

AI可识别区域,XYWHArea数据类型见4.57复杂数据类型描述

4.26 SetCameraArea(设置AI可识别区域)

接口名

bool SetCameraArea(XYWHArea area);

功能说明

设置AI识别区域参数:此接口允许用户通过指定区域的位置和大小来定义AI系统的识别范围,AI将只会在定义的区域内执行识别任务,请注意,渲染图像就是贵司应用软件上的用来设置识别区域的图像,且该接口自带保存功能,下次启动时会设置上次设置的识别区域。

我们提供了矩形区域和梯形区域两种设置方式,请选择适合您的方式输入对应的参数,若您将两种方式的参数都传入,我们将优先采取梯形区域的方式去设置识别区域。

输入参数

参数名

参数说明

XYWHArea area

AI可识别区域

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.27 VisRecImg(获取识别图像)

接口名

uint8_t* VisRecImg(int* len, bool bbox = false, const char* skus = "");

功能说明

获取本次识别的图片,在多目标识别场景中,您还可以通过传入bbox参数,在图片上高亮显示出的多个目标的商品框。

输入参数

参数名

参数说明

int* len

图片数据流大小

bool bbox

是否增加bbox框,默认不增加

const char* skus

系统将自动将bbox框中的SKU编号转换为实际的商品名称,格式为"11:apple;12:orange",默认为空

输出参数

参数类型

参数说明

unsigned char*

图片数据流

4.28 AiRecognition(AI识别)

接口名1

const char* AiRecognition(int8_t topk_mode = 0, int8_t max_output = 0);

接口名2

const char* AiRecognition(int8_t topk_mode, int8_t max_output, bool save_img, int timeout = 0);

接口名3

const char* AiRecognition(ImageData imagedata, int8_t topk_mode = 0, int8_t max_output = 0);

该接口仅android可以调用

功能说明

标准学习模式:AI商品识别,系统将返回本次识别的结果。在标准学习模式下,系统只能对一个商品进行一次识别,若重复调用,则会覆盖上一次识别结果。

输入参数

参数名

参数说明

ImageData imagedata

识别接口输入的数据格式,仅android接口需要使用

int8_t topk_mode

返回识别结果模式,0表示智能输出,输出最优识别结果;大于0为固定输出k个识别结果

int8_t max_output

当将topk_mode参数设置为 0 时,该参数将起作用。它指定了最多输出的数量,其中 0 表示使用系统内部默认值。也就是说识别结果的输出数量范围是[0, max_output]

bool save_img

是否保存本次识别图片。若设置为True,则程序会在返回字段 filename中提供图片的名称,并将图片保存在程序所在目录的 "OSAITemp" 文件夹下

int timeout

识别超时值,当识别时间超过这个阈值时,将直接返回超时错误,<=0代表无超时判断

输出参数

参数类型

参数说明

const char*

返回识别结果,json格式,rank为识别结果,对应商品sku

{

"time":{

"extract_feat_time":15,

"capture_frame_time":20,

"vector_search_time":1

},

"result":[{

"index":0,

"rank":["00002","00001"],

"filename":"",

"log":{"dis":["00002:0.991514","00001:0.990286"]}

}]

}

4.29 AiFastRecognition(快速学习模式AI识别)

接口名1

const char* AiFastRecognition();

接口名2

const char* AiFastRecognition(ImageData imagedata);

该接口仅android可以调用

功能说明

快速学习模式:AI商品识别,系统将返回本次识别id。在快速学习模式下,系统可以对一个商品进行多次识别,然后将这些识别数据统一进行学习。

输入参数

参数名

参数说明

ImageData imagedata

识别接口输入的数据格式,仅android接口需要使用

输出参数

参数类型

参数说明

const char*

返回识别结果,json格式,id为该次识别标识

{

"result":[{

"id":0

}]

}

4.30 IsReadyState(获取是否准备触发识别状态)

接口名

bool IsReadyState(IsReadyStateArg arg);

功能说明

获取是否准备触发识别状态,该接口将根据重量判断是否可以触发识别。

输入参数

参数名

参数说明

IsReadyStateArg arg

输入参数,IsReadyStateArg 数据类型见4.57复杂数据类型描述

输出参数

参数类型

参数说明

bool

TRUE: 是 FALSE: 否

4.31 EnableEmptyPanDetection(开启空秤盘检测)

接口名

bool EnableEmptyPanDetection();

功能说明

此接口将开启空秤盘检测功能,我们将会检测当前识别结果是否为空秤盘,若为空秤盘则会返回空识别结果。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 开启成功 FALSE: 开启失败

4.32 AiGalleryLearn(AI学习)

接口名1

bool AiGalleryLearn(const char* sku_id, size_t index = 0);

接口名2

bool AiGalleryLearn(const char* sku_id, const char* sku_name, bool is_learn = true, size_t index = 0);

功能说明

标准学习模式:AI学习商品,系统将该次识别结果标记为该SKU的学习数据,请注意,在学习之前需要先进行一次识别。当在您的应用场景里仅需要进行识别而不进行学习时,我们推荐您依然调用此接口,并设置 is_learn 参数为 false,这样可以确保AI系统的稳定性。

输入参数

参数名

参数说明

const char* sku_id

商品编号

const char* sku_name

商品编号的名称

bool is_learn

是否执行学习操作,如果为false,代表不把学习结果载入库,即仅识别不学习方式

size_t index

学习第index个目标商品,这个index会在识别结果里返回,在单目标识别场景该参数总是为0

输出参数

参数类型

参数说明

bool

TRUE: 学习成功,FALSE: 学习失败

4.33 AiGalleryFastLearn(快速学习模式AI学习)

接口名1

bool AiGalleryFastLearn(const char* sku_id, size_t* rec_ids, int len);

接口名2

bool AiGalleryFastLearn(const char* sku_id, const char* sku_name, size_t* rec_ids, int len);

功能说明

快速学习模式:AI学习商品。在快速学习模式下,系统允许用户指定一个需要学习的识别ID列表,然后将这些识别数据统一进行学习。

输入参数

参数名

参数说明

const char* sku_id

商品编号

const char* sku_name

商品编号的名称

size_t* rec_ids

识别ID列表,其中每个ID值都是在快速学习模式的识别过程中获取的

int len

识别ID列表大小

输出参数

参数类型

参数说明

bool

TRUE: 学习成功,FALSE: 学习失败

4.34 AiGalleryList(获取AI已学习列表)

接口名

const char* AiGalleryList();

功能说明

获取已学习的SKU列表。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

const char*

已学习的SKU列表,多个SKU之间以逗号分隔符分开

4.35 AiGalleryBatchLearn(批处理AI学习)

接口名

bool AiGalleryBatchLearn(const char* dirpath = "OSAIBackup", int count = 0);

功能说明

进行批量图片学习,用户只需指定一个目录,系统便会自动学习该目录中的所有图片。请注意,图片目录结构OSAIBackup/00001/xxx.png,

OSAIBackup/00002/xxx.png, 其中一级目录为父目录,二级目录是以商品编号为命名的目录,三级目录存放对应的图片。

输入参数

参数名

参数说明

const char* dirpath

图片集的父目录

int count

限制每个文件夹中可学习的最大图片数量,默认为0,意味着无限制,即学习该文件夹内所有图片

输出参数

参数类型

参数说明

bool

TRUE: 学习成功,FALSE: 学习失败

4.36 AiGalleryBatchLearnProgress(批处理AI学习进度)

接口名1

uint8_t AiGalleryBatchLearnProgress();

功能说明

获取批量图片学习商品的进度。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

unsigned char

进度值(0-100),120代表学习失败

4.37 AiGalleryDeleteSku(AI删除商品)

接口名

bool AiGalleryDeleteSku(const char* sku_id, size_t count = 0);

功能说明

AI删除商品:系统将删除该SKU的学习数据。请注意,当您想要撤回一条学习记录时,可以调用此接口,并将count置为1。

输入参数

参数名

参数说明

const char* sku_id

商品编号,传入“*”代表删除所有商品

size_t count

删除选定商品编号最近的count条记录,0代表所有

输出参数

参数类型

参数说明

bool

TRUE: 删除成功,FALSE: 删除失败

4.38 AiGalleryPreLearn(AI预学习)

接口名

int AiGalleryPreLearn(Product** products, int len, int rule = 0);

功能说明

AI预学习功能,系统通过学习预定义的商品图片,并匹配商品库的数据,提高初始使用阶段的识别准确率。

输入参数

参数名

参数说明

Product** products

商品库数据列表,Product数据类型见4.57复杂数据类型描述

int len

商品列表大小

int rule

匹配规则,0为精准匹配,1为模糊匹配

输出参数

参数类型

参数说明

int

返回码,

>=0: 成功预学习商品数量,

-1: 参数为空,

-2: 算法未激活

4.39 AiGalleryFilterSkus(过滤识别数据)

接口名

bool AiGalleryFilterSkus(const char* keepsku_array[], int count);

功能说明

过滤识别数据,系统将过滤并排除那些不属于现有商品库的识别数据,请注意,这些数据仅会在识别的时候被过滤掉,并不会被删除。

输入参数

参数名

参数说明

const char* keepsku_array[]

保留的商品编号列表,不在该列表的商品编号的学习数据将会被过滤掉

int count

商品编号列表数量

输出参数

参数类型

参数说明

bool

TRUE: 保留成功,FALSE: 保留失败

4.40 AiGalleryRange(设置识别范围)

接口名

bool AiGalleryRange(const char* skuid_range[], size_t skuid_range_len);

功能说明

设置识别范围,AI算法将在该范围内查找识别结果,注意,该接口会覆盖上一次的设置范围。

输入参数

参数名

参数说明

const char* skuid_range[]

识别范围数组

size_t skuid_range_len

数组大小

输出参数

参数类型

参数说明

bool

TRUE: 设置成功,FALSE: 设置失败

4.41 AiGalleryRenameSku(更换SKU名字)

接口名

bool AiGalleryRenameSku(const char* oldsku, const char* newsku);

功能说明

更换sku名字,请注意,当新的sku存在或旧sku不存在时返回错误。

输入参数

参数名

参数说明

const char* oldsku

旧sku

const char* newsku

新sku

输出参数

参数类型

参数说明

bool

TRUE: 更换成功,FALSE: 更换失败

4.42 ExportFeature(导出AI数据)

接口名1

const char* ExportFeature(const char* packpath);

接口名2

const char* ExportFeature(const char* packpath, const char* sku_id);

功能说明

导出AI数据文件,您可以导出AI数据文件,并将它们存储在其他设备上,若您仅需要单个sku的AI数据,您可传入sku_id参数获取,但我们不建议这么操作。

输入参数

参数名

参数说明

const char* packpath

导出文件夹路径,若不提供文件名,将使用默认文件名,如D:/OSAI 或 D:/OSAI/test.zip,请注意,文件名必须是".zip"结尾

const char* sku_id

【非必选】商品编号,仅导出该sku的AI数据,默认文件名为{sku_id}.feature。

输出参数

参数类型

参数说明

const char*

导出文件的路径,空代表导出失败

4.43 LoadFeature(导入AI数据)

接口名

int LoadFeature(const char* packpath);

功能说明

导入AI数据文件,在其他设备上完成导出后,您可以将这些AI数据文件导入到本设备上,若您仅需要导入单个sku的AI数据,您可传入.feature的文件,但我们不建议这么操作。

输入参数

参数名

参数说明

const char* packpath

导入文件夹路径,必须是zip包

输出参数

参数类型

参数说明

int

返回码,

>=0: 表示学习数量,

-1: 算法未激活,

-2: 文件不存在,

-3: 解压失败,

-4: 版本不一致

4.44 SyncData(同步AI数据)

接口名

bool SyncData(const char* ip);

功能说明

此接口允许用户通过指定目标机器的IP地址,将AI数据发送到该机器。这适用于需要在不同设备间同步或迁移AI数据的场景。请注意,两台设备之间要保证网络能够ping通。

输入参数

参数名

参数说明

const char* ip

目标ip

输出参数

参数类型

参数说明

bool

TRUE: 同步成功,FALSE: 同步失败

4.45 StartShareData(开启数据共享)

接口名

bool StartShareData(int port = 40064);

功能说明

此接口用于开启在线实时共享AI数据。当该功能被启动时,每当系统添加一条新的AI数据时,该数据将自动发送给所有开启该功能的客户端。这种方式适用于需要即时同步最新AI数据的应用场景,请注意,该功能默认是关闭的,且默认端口为40064,且该接口自带保存功能,若上次已开启该功能,则启动时会自动打开。

输入参数

参数名

参数说明

int port

端口号

输出参数

参数类型

参数说明

bool

TRUE: 开启成功,FALSE: 开启失败

4.46 CloseShareData(关闭数据共享)

接口名

bool CloseShareData();

功能说明

关闭在线实时共享AI数据。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 关闭成功,FALSE: 关闭失败

4.47 ShareDataStatus(数据共享功能状态)

接口名

bool ShareDataStatus();

功能说明

共享学习数据功能状态。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 已开启, FALSE: 已关闭

4.48 OpenSerial(打开串口)

接口名

bool OpenSerial(const char* dev_name, uint32_t baud_rate, char parity, char byte_size, char stop_bits, ProtocolType protocol_type);

功能说明

打开串口。

输入参数

参数名

参数说明

const char* dev_name

串口设备名,例如COM2

uint32_t baud_rate

波特率

char parity

校验位(0为无校验,1为奇校验,2为偶校验,3为标记校验)

char byte_size

数据位

char stop_bits

停止位(1为1位停止位,2为2位停止位,3为1.5位停止位)

ProtocolType protocol_type

秤的协议类型,ProtocolType数据类型见4.57复杂数据类型描述

输出参数

参数类型

参数说明

bool

TRUE: 打开成功, FALSE: 打开失败

4.49 CloseSerial(关闭串口)

接口名

bool CloseSerial();

功能说明

关闭串口。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 关闭成功, FALSE: 关闭失败

4.50 ReadSerial(读取串口数据)

接口名

SerialData ReadSerial();

功能说明

读取串口数据。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

SerialData

串口数据内容,SerialData数据类型见4.57复杂数据类型描述

4.51 Peel(去皮)

接口名

bool Peel();

功能说明

去皮。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 去皮成功 FALSE: 去皮失败

4.52 Zero(归零)

接口名

bool Zero();

功能说明

归零。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 归零成功 FALSE: 归零失败

4.53 AsyncReadSerialData(异步读取串口数据)

接口名

bool AsyncReadSerialData(const SerialDataCallback& callback);

功能说明

异步读取串口数据。

输入参数

参数名

参数说明

const SerialDataCallback& callback

读取数据回调函数

输出参数

参数类型

参数说明

bool

TRUE: 调用成功, FALSE: 调用失败

4.54 ExitAsyncReadSerialData(退出异步读取)

接口名

bool ExitAsyncReadSerialData();

功能说明

退出异步读取串口数据。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

bool

TRUE: 退出成功, FALSE: 退出失败

4.55 LastError(输出最后的一条错误信息)

接口名

const char* LastError();

功能说明

输出最后的一条错误信息。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

const char*

最后一条错误信息

4.56 LastErrorCode(输出最后的一条错误码)

接口名

int LastErrorCode();

功能说明

输出最后的一条错误码。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

int

最后一条错误码

4.57 复杂数据类型描述

类型名

DeviceInfo

参数

参数名

参数说明

bool activated

是否激活

bool expired

是否过期

char sn[128]

设备序列号

char cd_key[128]

激活码

char deadline[128]

到期时间

类型名

CameraInfo

参数

参数名

参数说明

unsigned int id

摄像头id号

char name[128]

摄像头名称

char link[128]

摄像头路径

类型名

XYWHArea

参数

参数名

参数说明

unsigned int x

渲染图像选定矩形区域左上角坐标x

unsigned int y

渲染图像选定矩形区域左上角坐标y

unsigned int w

渲染图像选定矩形区域宽度

unsigned int h

渲染图像选定矩形区域高度

unsigned int topleft_x

渲染图像选定梯形区域左上角坐标x

unsigned int topleft_y

渲染图像选定梯形区域左上角坐标y

unsigned int topright_x

渲染图像选定梯形区域右上角坐标x

unsigned int topright_y

渲染图像选定梯形区域右上角坐标y

unsigned int bottomleft_x

渲染图像选定梯形区域左下角坐标x

unsigned int bottomleft_y

渲染图像选定梯形区域左下角坐标y

unsigned int bottomright_x

渲染图像选定梯形区域右下角坐标x

unsigned int bottomright_y

渲染图像选定梯形区域右下角坐标y

unsigned int img_w

渲染图像的宽度

unsigned int img_h

渲染图像的高度

类型名

IsReadyStateArg

参数

参数名

参数说明

float weight

重量, 单位g

bool is_steady

秤盘是否稳重状态

bool rec_after_steady = false

稳重后识别

bool start_from_zero = true

归零后识别

int max_check_time = 120

最大检测时长, 在达到重量后检测图像质量的最大时长

int min_rec_weight = 20

最小识别重量, 单位g

类型名

Product

参数

参数名

参数说明

char sku[128]

商品编号

char name[128]

商品名称

类型名

ProtocolType

参数

参数名

参数说明

TUO_LI_DUO

托利多协议类型

DI_BAO_G

迪宝G系列协议类型

DA_HUA

大华协议类型

DING_JIANG

顶尖协议类型

LONG_FLY

龙飞协议类型

YING_TUO

映拓协议类型

ZK_YT

中科英泰协议类型

VAN_DING

万鼎协议类型

RONGTA

容大协议类型

TAI_HANG

太航协议类型

XIANG_SHAN

香山协议类型

BIZER_BA

碧彩协议类型

QI_HUA

七华协议类型

类型名

SerialData

参数

参数名

参数说明

bool steady

是否稳重

const char* weight

重量

const char* unit

重量单位(默认为kg,若秤协议有带的单位,则返回协议解析出来的重量单位)

const char* tare

皮重

Status status

状态

类型名

Status

参数

参数名

参数说明

NORM

正常

ERRO

异常

5.Android 特有SDK接口说明

注:Androi的SDK接口统一维护在Osai类里,其他接口请查看6.2章节Java接口对照表

5.1 setCameraBrightness(设置摄像头亮度)

接口名

void setCameraBrightness(int brightness);

功能说明

设置摄像头亮度,Android摄像头不支持。

输入参数

参数名

参数说明

int brightness

亮度值:0-100

输出参数

参数类型

参数说明

5.2 getCameraBrightness(获取摄像头亮度)

接口名

int getCameraBrightness();

功能说明

获取摄像头亮度,Android摄像头不支持,会获取到0。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

int

亮度值

5.3 getCameraImageData(获取摄像头图像数据)

接口名

ImageData getCameraImageData();

功能说明

获取摄像头图像数据,该数据类型是传入识别接口的图像格式。

输入参数

参数名

参数说明

输出参数

参数类型

参数说明

ImageData

识别接口图像数据类型

示例用法

ImageData img = getCameraImageData();

String ret = aiRecognition(img);

5.4 getBitmapImageData(获取bitmap图像数据)

接口名

ImageData getBitmapImageData(Bitmap bitmap);

功能说明

获取bitmap图像数据,该数据类型是传入识别接口的图像格式。

输入参数

参数名

参数说明

Bitmap bitmap

bitmap类型数据图像

输出参数

参数类型

参数说明

ImageData

识别接口图像数据类型

示例用法

Bitmap bitmap;

ImageData img = getBitmapImageData(bitmap);

String ret = aiRecognition(img);

5.5 Initialize(SDK初始化)

接口名

Osai initialize(ConfigBuilder builder);

功能说明

在执行算法初始化之前,需要使用配置参数初始化接口来设置一些参数。您可以查看下面的"示例用法"来了解具体的用法。同时,您可以查阅带有"ConfigBuilder::"前缀的接口说明,以获取有关配置接口的更详细信息。

输入参数

参数名

参数说明

ConfigBuilder builder

ConfigBuilder 类对象

输出参数

参数类型

参数说明

Osai

Osai类

示例用法

Osai.ConfigBuilder builder = new Osai.ConfigBuilder()

builder.setcontext(this);

builder.setOpenCamera(true);

builder.setVid(“XXX");

Osai.initialize(builder);

5.6 ConfigBuilder::setVid(设置客户专属ID)

接口名

ConfigBuilder setVid(String vid);

功能说明

设置客户专属ID,该ID将对已配置的设备施加激活码使用限制。如需获取具体的ID值,请联系OSAI的商务团队。请注意,在激活产品或申请试用期之前,您需要先调用此接口。

输入参数

参数名

参数说明

String vid

客户专属ID,请联系OSAI商务人员获取

输出参数

参数类型

参数说明

ConfigBuilder

返回ConfigBuilder对象

示例用法

Osai.ConfigBuilder builder = new 0sai.ConfigBuilder()

builder.setcontext(this);

builder.setVid(“XXX");

Osai.initialize(builder);

5.7 ConfigBuilder::setOpenCamera(设置是否自动打开摄像头)

接口名

ConfigBuilder setOpenCamera(boolean open);

功能说明

设置是否自动打开摄像头。

输入参数

参数名

参数说明

boolean open

是否自动打开摄像头

输出参数

参数类型

参数说明

ConfigBuilder

返回ConfigBuilder对象

示例用法

Osai.ConfigBuilder builder = new Osai.ConfigBuilder()

builder.setcontext(this);

builder.setOpenCamera(true);

Osai.initialize(builder);

5.8 ConfigBuilder::setCameraVid(指定Usb摄像头id)

接口名

ConfigBuilder setCameraVid(int cameraVid);

功能说明

指定Usb摄像头id。

输入参数

参数名

参数说明

int cameraVid

Usb摄像头id

输出参数

参数类型

参数说明

ConfigBuilder

返回ConfigBuilder对象

示例用法

Osai.ConfigBuilder builder = new Osai.ConfigBuilder()

builder.setcontext(this);

builder.setCameraVid(0);

Osai.initialize(builder);

5.9 addInitCallback(获取加载AI数据进度)

接口名

addInitCallback(new InitCallback()

功能说明

获取加载AI数据进度

输入参数

参数名

参数说明

InitCallback

回调

输出参数

参数类型

参数说明

示例用法

Osai.getInstance().addInitCallback(new InitCallback() {

@Override

public void onInit(int progress) {

if(progress == 100) {

//加载完成

}

}

});

6.不同编程语言接口对照

6.1 C#接口对照表

C++接口名称

C#接口名称

RegIsReadyStateCallback

?RegIsReadyStateCallback@osai@@YGXP6AXPBD@Z@Z

GetSdkVersion

?GetSdkVersion@osai@@YGPBDXZ

GetModelVersion

?GetModelVersion@osai@@YGPBDXZ

OsaiInit

?OsaiInit@osai@@YG_NPBD@Z

OsaiUnInit

?OsaiUnInit@osai@@YG_NXZ

GetDeviceInfo

?GetDeviceInfo@osai@@YG?AVDeviceInfo@1@XZ

SetShopInfo

?SetShopInfo@osai@@YG_NPBD00@Z

UpgradeInfo

?UpgradeInfo@osai@@YG_NPAD00_N@Z

UpgradeProgram

?UpgradeProgram@osai@@YG_NPBD@Z

CheckNewModelUpgrade

?CheckNewModelUpgrade@osai@@YGHXZ

UpgradeModel

?UpgradeModel@osai@@YGHXZ

ThmbyMultiName

?ThmbyMultiName@osai@@YGPBDPBD0@Z

DetectionOnlineDevices

?DetectionOnlineDevices@osai@@YGPBDPBD@Z

SetVid

?SetVid@osai@@YG_NPBD@Z

DeviceActivate

?DeviceActivate@osai@@YG_NPBD000@Z

DeviceIsActivated

?DeviceIsActivated@osai@@YGHXZ

AgentQRCode

?AgentQRCode@osai@@YGPAEPAH@Z

UserQRCode

?UserQRCode@osai@@YGPAEPAH@Z

GetQRCode

?GetQRCode@osai@@YGPAEPAHPBD@Z

Unbind

?Unbind@osai@@YG_NXZ

GetCameraInfo

?GetCameraInfo@osai@@YGPAVCameraInfo@1@PAH@Z

OpenCamera

?OpenCamera@osai@@YG_NH@Z

CloseCamera

?CloseCamera@osai@@YG_NXZ

SetCameraResolution

?SetCameraResolution@osai@@YG_NHH@Z

GetCameraCurFrame

?GetCameraCurFrame@osai@@YGPAEPAH@Z

GetCameraArea

?GetCameraArea@osai@@YG?AVXYWHArea@1@XZ

SetCameraArea

?SetCameraArea@osai@@YG_NVXYWHArea@1@@Z

VisualizeRecImg

?VisualizeRecImg@osai@@YGPAEPAH_NPBD@Z

AiRecognition

?AiRecognition@osai@@YGPBDCC@Z

AiRecognition

?AiRecognition@osai@@YGPBDCC_NH@Z

AiFastRecognition

?AiFastRecognition@osai@@YGPBDXZ

IsReadyState

??0IsReadyStateArg@osai@@QAE@XZ

EnableEmptyPanDetection

?EnableEmptyPanDetection@osai@@YG_NXZ

AiGalleryLearn

?AiGalleryLearn@osai@@YG_NPBD0_NI@Z

AiGalleryLearn

?AiGalleryLearn@osai@@YG_NPBDI@Z

AiGalleryFastLearn

?AiGalleryFastLearn@osai@@YG_NPBD0PAIH@Z

AiGalleryFastLearn

?AiGalleryFastLearn@osai@@YG_NPBDPAIH@Z

AiGalleryList

?AiGalleryList@osai@@YGPBDXZ

AiGalleryBatchLearn

?AiGalleryBatchLearn@osai@@YG_NPBDH@Z

AiGalleryBatchLearnProgress

?AiGalleryBatchLearnProgress@osai@@YGEXZ

AiGalleryDeleteSku

?AiGalleryDeleteSku@osai@@YG_NPBDI@Z

AiGalleryPreLearn

?AiGalleryPreLearn@osai@@YGHPAPAVProduct@1@HH@Z

AiGalleryFilterSkus

?AiGalleryFilterSkus@osai@@YG_NQAPBDH@Z

AiGalleryRange

?AiGalleryRange@osai@@YG_NQAPBDI@Z

AiGalleryRenameSku

?AiGalleryRenameSku@osai@@YG_NPBD0@Z

ExportFeature

?ExportFeature@osai@@YGPBDPBD@Z

ExportFeature

?ExportFeature@osai@@YGPBDPBD0@Z

UnpackFeature

?UnpackFeature@osai@@YGHPBD@Z

LoadFeature

?LoadFeature@osai@@YGHPBD@Z

SyncData

?SyncData@osai@@YG_NPBD@Z

StartShareData

?StartShareData@osai@@YG_NH@Z

CloseShareData

?CloseShareData@osai@@YG_NXZ

ShareDataStatus

?ShareDataStatus@osai@@YG_NXZ

OpenSerial

?OpenSerial@serial@osai@@YG_NPBDIDDDW4ProtocolType@serialtype@2@@Z

CloseSerial

?CloseSerial@serial@osai@@YG_NXZ

ReadSerial

?ReadSerial@serial@osai@@YG?AUSerialData@serialtype@2@XZ

AsyncReadSerialData

?AsyncReadSerialData@serial@osai@@YG_NABQ6AXABUSerialData@serialtype@2@@Z@Z

ExitAsyncReadSerialData

?ExitAsyncReadSerialData@serial@osai@@YG_NXZ

Peel

?Peel@serial@osai@@YG_NXZ

Zero

?Zero@serial@osai@@YG_NXZ

LastError

?LastError@osai@@YGPBDXZ

LastErrorCode

?LastErrorCode@osai@@YGHXZ

6.2 Java接口对照表

C++接口名称

java接口名称

void RegIsReadyStateCallback(IsReadyStateCallback callback);

regIsReadyStateCallback(RecognitionCallback callback)

const char* GetSdkVersion();

String getSdkVersion();

const char* GetModelVersion();

String getModelVersion();

bool OsaiInit();

boolean osaiInit();

bool OsaiUnInit();

boolean osaiUnInit();

bool GetDeviceInfo(DeviceInfo& deviceInfo);

DeviceInfo getDeviceInfo();

bool SetShopInfo(const char* name, const char* contact, const char* phone);

boolean setShopInfo(String name, String contact, String phone);

int CheckNewModelUpgrade();

int checkNewModelUpgrade();

int UpgradeModel();

int upgradeModel();

bool SetVid(const char* vid);

ConfigBuilder::setVid(String vid);

bool DeviceActivate(const char* code, const char* name, const char* contact, const char* phone);

boolean deviceActivate(String code, String name, String contact, String phone);

int DeviceIsActivated();

int deviceIsActivated();

uint8_t* GetQRCode(int* len, const char* user_type);

byte[] getQRCode(String user_type);

bool Unbind();

boolean unbind();

bool OpenCamera(int id = 0);

ConfigBuilder::setOpenCamera(boolean open);

ConfigBuilder::setCameraVid(int cameraVid);

uint8_t* GetCameraCurFrame(int* len);

Bitmap GetCameraCurFrame();

XYWHArea GetCameraArea();

XYWHArea getCameraArea();

bool SetCameraArea(XYWHArea area);

boolean setCameraArea(XYWHArea area);

uint8_t* VisRecImg(int* len, bool bbox = false, const char* skus = "");

byte[] visRecImg(boolean bbox, String skus);

const char* AiRecognition(ImageData imagedata, int8_t topk_mode = 0, int8_t max_output = 0);

String aiRecognition(ImageData imagedata, int topk_mode, int max_output);

const char* AiFastRecognition(ImageData imagedata);

String aiFastRecognition(ImageData imagedata);

bool IsReadyState(IsReadyStateArg arg);

isReadyState(IsReadyStateArg isReadyStateArg)

bool EnableEmptyPanDetection();

boolean enableEmptyPanDetection();

bool AiGalleryLearn(const char* sku_id, size_t index = 0);

boolean aiGalleryLearn(String sku_id, int index);

bool AiGalleryLearn(const char* sku_id, const char* sku_name, bool is_learn = true, size_t index = 0);

boolean aiGalleryLearn(String sku_id, String sku_name, bool is_learn, int index);

bool AiGalleryFastLearn(const char* sku_id, const char* sku_name, size_t* rec_ids, int len);

boolean aiGalleryFastLearn(String sku_id, String sku_name,int[] rec_ids);

const char* AiGalleryList();

String aiGalleryList();

bool AiGalleryBatchLearn(const char* dirpath = "OSAIBackup", int count = 0);

boolean aiGalleryBatchLearn(String dirpath,int count);

uint8_t AiGalleryBatchLearnProgress();

int AiGalleryBatchLearnProgress();

bool AiGalleryDeleteSku(const char* sku_id, size_t count = 0);

boolean aiGalleryDeleteSku(String sku_id, int count);

int AiGalleryPreLearn(Product** products, int len, int rule = 0);

int aiGalleryPreLearn(Product[] products, int rule);

bool AiGalleryFilterSkus(const char* keepsku_array[], int count);

boolean aiGalleryFilterSkus(String[] keepsku_array, int count);

bool AiGalleryRenameSku(const char* oldsku, const char* newsku);

boolean aiGalleryRenameSku(String oldsku, String newsku);

const char* ExportFeature(const char* packpath);

String exportFeature(String packpath);

const char* ExportFeature(const char* packpath, const char* sku_id);

exportFeature(String path, String sku)

int LoadFeature(const char* packpath);

int loadFeature(String packpath);

bool SyncData(const char* ip);

boolean syncData(String ip);

bool StartShareData(int port = 40064);

boolean startShareData();

boolean startShareData(int port);

bool CloseShareData();

boolean closeShareData();

bool ShareDataStatus();

boolean shareDataStatus();

7.附录

7.1 OSAI Windows SDK包文件详情

SO库

说明

api-ms-win-xxx.dll

Windows 操作系统的so库

vcruntime140.dll

VC++运行库

msvcp120.dll

msvcp140.dll

msvcr120.dll

ucrtbase.dll

Universal C Runtime (UCRT) 的基础组件

libosai.dll

傲视自研AI so库

文件

说明

osai.db

AI已学习数据数据库

prelearned.db

AI预学习数据数据库

retrieval.ai

AI模型文件

retrieval_latest.ai

AI新模型文件

osai_configure.ini

AI配置文件

UpdatePkg.exe

AI升级替换程序

OSAIService.exe

AI服务程序

文件夹

说明

OSAILog

AI日志文件存放目录

OSAIBackup

AI学习数据备份目录

OSAIIcon

AI缩略图存放目录

OSAITemp

AI识别图片存放目录

7.2 OSAI Linux SDK包文件详情

SO库

说明

libxxx.so

Linux 操作系统的so库

libQt5Core.so.5

QT运行库

libQt5DBus.so.5

libQt5Gui.so.5

libQt5Widgets.so.5

libQt5XcbQpa.so.5

platforms/libqxcb.so

libosai.so

傲视自研AI so库

文件

说明

osai.db

AI已学习数据数据库

prelearned.db

AI预学习数据数据库

retrieval.ai

AI模型文件

retrieval_latest.ai

AI新模型文件

osai_configure.ini

AI配置文件

UpdatePkg

AI升级替换程序

OSAIService

AI服务程序

OSAIService.run

AI服务程序启动脚本

文件夹

说明

OSAILog

AI日志文件存放目录

OSAIBackup

AI学习数据备份目录

OSAIIcon

AI缩略图存放目录

OSAITemp

AI识别图片存放目录

7.3 OSAI Android SDK包文件详情

SO库

说明

libc++_shared.so

C++ 标准库 so 库

libjpeg-turbo1500.so

图像压缩和解压缩库

libmmkv.so

键值存储库

libopencv_java4.so

Opencv图像处理算法库

librknnrt.so

npu推理库

libcamera.so

傲视自研摄像头处理库

libosai.so

傲视自研AI c++ 接口 so库

libosnn5-lib.so

傲视自研AI java 接口so库

文件

说明

osai.db

AI已学习数据数据库

prelearned.db

AI预学习数据数据库

retrieval.ai

AI模型文件

retrieval.aik

AI模型文件

retrieval_latest.ai

AI新模型文件

osai_configure.ini

AI配置文件

文件夹

说明

OSAILog

AI日志文件存放目录

OSAIBackup

AI学习数据备份目录

OSAIIcon

AI缩略图存放目录

OSAITemp

AI识别图片存放目录

8.Q&A

Q:摄像头是服务接管,还是收银软件自己管理?

A:建议服务接管,在需要查看图片时,可以通过调用“获取图片”接口来获取当前拍摄的照片。如果收银软件必须自行管理摄像头,那么应避免实时渲染摄像头捕获的画面,因为图像处理会消耗大量CPU资源,可能会导致设备运行缓慢和识别速度降低。

Q:识别速度慢,或时快时慢是什么原因?

A:识别速度的正常范围大约是200毫秒每次,如果识别速度变慢,通常是因为CPU的可用资源不足。首先,需要检查设备是否达到了最低配置要求(详见第2.2节)。接着,可以通过任务管理器来监控CPU的使用情况。通常,远程控制软件(如向日葵、ToDesk等)以及实时播放摄像头画面的应用会消耗大量的CPU资源。

Q:什么时候清空当前识别记录?

A:建议在秤盘归零时重置识别状态。

Q:感觉学不会?

A:首次学习后识别一定会有结果,首先确认一下学习接口是否返回成功,学习接口需要传入最新识别结果返回的sku_id,如果sku_id不是最新的,就会导致学习失败,如果学习前没有调用识别接口,也会导致学习失败。

Q:感觉识别不准?

A:确认一下标定范围设置是否正确。

Last updated