你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
货架陈列图合规性(预览)
货架图是指示在货架上正确放置零售产品的图表。 通过货架图合规性 API,可以将照片中的分析结果与商店的货架图输入进行比较。 这可返回货架图中所有位置的帐户,以及每个位置是否都有产品。
注意
图像中显示的品牌不属于 Microsoft,不表示品牌所有者对 Microsoft 或 Microsoft 产品任何形式的认可,也不表示 Microsoft 对品牌所有者或其产品的认可。
先决条件
准备货架图架构
需要以特定的 JSON 格式设置货架图数据。 请参阅以下部分了解字段定义。
"planogram": {
"width": 100.0,
"height": 50.0,
"products": [
{
"id": "string",
"name": "string",
"w": 12.34,
"h": 123.4
}
],
"fixtures": [
{
"id": "string",
"w": 2.0,
"h": 10.0,
"x": 0.0,
"y": 3.0
}
],
"positions": [
{
"id": "string",
"productId": "string",
"fixtureId": "string",
"x": 12.0,
"y": 34.0
}
]
}
X 和 Y 坐标相对于左上角原点,宽度和高度将每个边界框向下和向右延伸。 下图显示坐标系统的示例。
注意
图像中显示的品牌不属于 Microsoft,不表示品牌所有者对 Microsoft 或 Microsoft 产品任何形式的认可,也不表示 Microsoft 对品牌所有者或其产品的认可。
货架图架构中的数量以非特定单位表示。 这些数量可对应于英寸、厘米或任何其他度量单位。 匹配算法可计算照片分析单位(像素)与货架图单位之间的关系。
货架图 API 模型
描述用于货架图匹配操作的货架图。
名称 | Type | 描述 | 必需 |
---|---|---|---|
width |
Double | 货架图的宽度。 | 是 |
height |
double | 货架图的高度。 | 是 |
products |
ProductApiModel | 货架图中的产品列表。 | 是 |
fixtures |
FixtureApiModel | 货架图中的固定物列表。 | 是 |
positions |
PositionApiModel | 货架图中的位置列表。 | 是 |
产品 API 模型
描述货架图中的产品。
名称 | Type | 描述 | 必须 |
---|---|---|---|
id |
string | 产品的 ID。 | 是 |
name |
字符串 | 产品的名称。 | 是 |
w |
double | 产品的宽度。 | 是 |
h |
double | 固定物的高度。 | 是 |
固定物 API 模型
描述货架图中的固定物(货架或类似硬件)。
名称 | Type | 描述 | 必须 |
---|---|---|---|
id |
string | 固定物的 ID。 | 是 |
w |
double | 固定物的宽度。 | 是 |
h |
double | 固定物的高度。 | 是 |
x |
double | 原点向左的偏移量,以英寸或厘米为单位。 | 是 |
y |
double | 原点向上的偏移量,以英寸或厘米为单位。 | 是 |
位置 API 模型
描述货架图中产品的位置。
名称 | Type | 描述 | 必须 |
---|---|---|---|
id |
string | 位置的 ID。 | 是 |
productId |
字符串 | 产品的 ID。 | 是 |
fixtureId |
字符串 | 产品所在固定物的 ID。 | 是 |
x |
double | 原点向左的偏移量,以英寸或厘米为单位。 | 是 |
y |
double | 原点向上的偏移量,以英寸或厘米为单位。 | 是 |
获取分析结果
返回的 JSON 文本应为 "detectedProducts"
结构。 这可显示货位上检测到的所有产品,以及训练阶段中使用的产品特定标签。
"detectedProducts": {
"imageMetadata": {
"width": 21,
"height": 25
},
"products": [
{
"id": "01",
"boundingBox": {
"x": 123,
"y": 234,
"w": 34,
"h": 45
},
"classifications": [
{
"confidence": 0.8,
"label": "Product1"
}
]
}
],
"gaps": [
{
"id": "02",
"boundingBox": {
"x": 12,
"y": 123,
"w": 1234,
"h": 123
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
]
}
准备匹配的请求
将货架图架构的 JSON 内容与分析结果的 JSON 内容联接,如下所示:
"planogram": {
"width": 100.0,
"height": 50.0,
"products": [
{
"id": "string",
"name": "string",
"w": 12.34,
"h": 123.4
}
],
"fixtures": [
{
"id": "string",
"w": 2.0,
"h": 10.0,
"x": 0.0,
"y": 3.0
}
],
"positions": [
{
"id": "string",
"productId": "string",
"fixtureId": "string",
"x": 12.0,
"y": 34.0
}
]
},
"detectedProducts": {
"imageMetadata": {
"width": 21,
"height": 25
},
"products": [
{
"id": "01",
"boundingBox": {
"x": 123,
"y": 234,
"w": 34,
"h": 45
},
"classifications": [
{
"confidence": 0.8,
"label": "Product1"
}
]
}
],
"gaps": [
{
"id": "02",
"boundingBox": {
"x": 12,
"y": 123,
"w": 1234,
"h": 123
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
]
}
该文本将在 API 请求正文中使用。
调用货架图匹配 API
将以下
curl
命令复制到文本编辑器中。curl.exe -H "Ocp-Apim-Subscription-Key: <subscriptionKey>" -H "Content-Type: application/json" "<endpoint>/computervision/planogramcompliance:match?api-version=2023-04-01-preview" -d "<body>"
必要时在命令中进行如下更改:
- 将
<subscriptionKey>
的值替换为视觉资源密钥。 - 将
<endpoint>
的值替换为视觉资源终结点。 例如:https://YourResourceName.cognitiveservices.azure.com
。 - 将
<body>
的值替换为在上一部分准备的联接 JSON 字符串。
- 将
打开命令提示符窗口。
将文本编辑器中编辑的
curl
命令粘贴到命令提示符窗口,然后运行命令。
检查响应
JSON 中会返回成功响应,显示在每个货架图位置检测到的产品(或间隙)。 请参阅以下部分了解字段定义。
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
货架图匹配位置 API 模型
根据产品理解结果,对货架图位置 ID 和对应检测到的对象进行匹配。
名称 | Type | 描述 | 必须 |
---|---|---|---|
positionId |
string | 货架图中的位置 ID 与对应检测到的对象匹配。 | 否 |
detectedObject |
DetectedObjectApiModel | 描述在图像中检测到的对象。 | 否 |