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
增加称重协议,检测是否可识别状态,检测局域网内的设备列表等接口或功能。
废弃请求试用期接口。
修复Windows导出/导入数据不兼容中文路径,初始化时调用初始接口返回初始化失败等问题。
OSAI
2024.11.05
V5.1.7
导出/导入AI数据增加sku_id参数,可导出/导入单个商品学习数据。
OSAI
2024.12.20
V5.2.0
修复已知bug。
增加设置识别范围接口。
优化算法,识别更准确。
OSAI
2.SDK下载和使用流程说明
2.1 OSAI SDK下载
请联系您的客户经理获取OSAI SDK的下载链接。
2.2 OSAI 不同平台介绍
可支持平台
系统版本要求
部署流程
Windows
Windows 7及以上
进入程序目录
双击运行OSAIService.exe程序
Linux
Ubuntu 18.04及以上
进入程序目录
执行”./OSAIService.run” 命令启动脚本
Android
Android 7.1及以上
根据SDK压缩包里的《最新SDK获取依赖链接以及需要添加的代码》文档操作
2.3 OSAI SDK使用流程
AI视觉识别技术在生鲜零食等行业已经得到了广泛的应用。为了满足这一需求,我们开发了一套功能强大的AI SDK,并配套提供了一套完整的HTTP服务程序。我们的SDK具备对商品进行学习的能力,能够高效识别出已经学习过的商品。为了方便开发者集成,我们提供了两种标准的接口对接方式,同时根据具体平台特性可能会提供少量特有的使用接口:
HTTP接口方式:通过HTTP接口,您可以便捷地与我们的AI视觉识别服务进行交互,实现商品的学习和识别功能。这种方式具有易于实施和跨平台的优点。
SDK DLL接口:对于想要集成到自己程序的用户,您可以直接对接我们的SDK DLL接口。这提供了更多的自定义选项和灵活性。
2.3.1 应用软件AI识别的流程图
首先,若您想要使用SDK的 AI功能,您需要先对设备进行激活。您可通过调用详细信息接口(osai/sys/details)获取到设备激活状态,对于未激活的设备,需要调用激活接口进行激活。
其次,构建AI系统时,您只需遵循两个主要步骤:识别和学习。具体到业务场景的应用,例如在生鲜行业,这一流程可以通过以下方式实现:
识别阶段:通过监控电子秤的重量变化来自动触发识别机制。这可以通过设定一个重量阈值来实现,当商品放置到秤上并达到或超过该阈值时,系统将自动启动识别过程。
学习阶段:在识别出商品后,系统将等待用户的最终确认。用户可以通过点击界面上的正确商品来确认识别结果。一旦用户点击确认,系统将记录这次的识别结果作为学习数据,从而完成学习过程。
通过这种方式,AI系统能够在实际的业务流程中不断学习和优化,进而提高识别的准确性和效率。
具体的流程图如下图所示:

2.3.2 设置识别秤盘区域图像的坐标范围
为了提升AI系统的识别准确性,我们建议对图像中秤盘区域的坐标范围进行精确设置。这一设置的目的是为了最小化外部因素的干扰,确保AI能够更加专注于识别秤盘上的物体。
具体操作时,您应当定义一个矩形区域,这个区域应当足够大,以刚好覆盖秤盘,排除其他不必要的背景和物体。
如图中所示,绿框标识的区域即为推荐的坐标范围。通过精确设置这一区域,可以显著提高AI在实际应用中的识别效率和准确性。

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
功能说明
获取摄像头当前实时帧的一张图片。
请求参数
参数名
参数说明
响应参数
参数名
参数说明
返回示例

3.22 GET:cam/livestream(获取视频流数据)
接口名
/osai/cam/livestream
功能说明
获取摄像头当前实时的图像帧,并以视频流的形式返回。不建议您在实际使用过程中调用该接口,因为该接口会占用大量系统资源,影响识别速度。
请求参数
参数名
参数说明
响应参数
参数名
参数说明
返回示例

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",默认为空
响应参数
参数名
参数说明
返回示例

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
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