你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
移除图像中的背景
重要
此功能现已弃用。 2025 年 1 月 10 日,Azure AI 图像分析 4.0 分段 API 和背景消除服务将停用。 此日期之后,对此服务的所有请求都将失败。
为了确保模型能够顺畅运行,请安装开源 Florence 2 模型并使用其区域分段功能,从而实现类似的背景消除操作。
本文演示如何调用图像分析 4.0 API 来分割图像(分割前景与背景)。 它还介绍了如何分析返回的信息。
重要
背景移除只能通过直接 REST API 调用使用。 它无法通过 SDK 使用。
先决条件
本指南假定你已成功按照快速入门页中提到的步骤进行操作。 这意味着:
- 你已经创建了视觉资源 并获取了密钥和终结点 URL。
- 你已成功对服务进行了
curl.exe
调用(或使用了替代工具)。 根据此处的示例修改curl.exe
调用。
快速入门介绍如何从图像中提取视觉特征。 但是,这些概念与背景移除类似。 因此,从快速入门开始并做出修改可以帮到你。
重要
后台移除仅在某些 Azure 区域中可用。 请参阅上市区域
对服务进行身份验证
若要对图像分析服务进行身份验证,需要计算机视觉密钥和终结点 URL。
提示
请不要直接在代码中包含密钥,并且绝不公开发布密钥。 有关 Azure Key Vault 等更多身份验证选项,请参阅 Azure AI 服务安全性一文。
身份验证是通过添加 HTTP 请求头 Ocp-Apim-Subscription-Key 并将其设为你的视觉密钥来完成的。 向 URL <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview
进行调用,其中 <endpoint>
是唯一的计算机视觉终结点 URL。 有关添加到此 URL 的另一个查询字符串,请参阅选择模式部分。
选择要分析的图像
本指南中的代码使用 URL 引用的远程图像。 你可能要自行尝试不同的图像,以了解图像分析功能的完整功能。
分析远程图像时,请通过设置请求正文的格式来指定图像的 URL,如下所示:{"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}
。 Content-Type 应为 application/json
。
若要分析本地图像,请将二进制图像数据放在 HTTP 请求正文中。 Content-Type 应为 application/octet-stream
或 multipart/form-data
。
选择模式
将查询字符串模式设为这两个值之一。 如果要进行图像分段,则此查询字符串是必需的。
URL 参数 | 值 | 说明 |
---|---|---|
mode |
backgroundRemoval |
输出检测到的前景对象的图像,具有透明背景。 |
mode |
foregroundMatting |
输出灰度前景蒙版图像,显示检测到的前景对象的不透明度。 |
backgroundRemoval 的填充 URL 如下所示:<endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval
获取服务结果
本部分介绍如何进行 API 调用和分析结果。
Content-Type: image/png
成功后,服务会返回 200
HTTP 响应,正文包含二进制流形式的返回的 PNG 图像。
例如,假设背景移除在下图上运行:
成功进行背景移除调用后,以下四通道 PNG 图像是 backgroundRemoval
模式的响应:
以下单通道 PNG 图像是 foregroundMatting
模式的响应:
对于 foregroundMatting
模式,API 会返回与原始图像大小相同的图像,但对于 backgroundRemoval
模式最多返回 1600 万像素(保持图像纵横比)。
错误代码
出现错误时,图像分析服务响应会包含一个 JSON 有效负载,它包含错误代码和错误消息。 它还可能包括其他详细信息,以内部错误代码和消息的形式出现。 例如:
{
"error":
{
"code": "InvalidRequest",
"message": "Analyze query is invalid.",
"innererror":
{
"code": "NotSupportedVisualFeature",
"message": "Specified feature type is not valid"
}
}
}
下面是常见错误及其原因的列表。 列表项采用以下格式显示:
- HTTP 响应代码
- JSON 响应中的错误代码和消息
- [可选] JSON 响应中的内部错误代码和消息
- JSON 响应中的错误代码和消息
常见错误表:
400 Bad Request
InvalidRequest - Image URL is badly formatted or not accessible
。 确保图像 URL 有效且可公开访问。InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes
。 通过压缩图像和/或调整大小来减小图像的大小,然后重新提交请求。InvalidRequest - The feature 'Caption' is not supported in this region
。 此功能仅在特定的 Azure 区域中受支持。 有关受支持的 Azure 区域列表,请参阅快速入门先决条件。InvalidRequest - The provided image content type ... is not supported
。 请求中的 HTTP 标头 Content-Type 不是允许的类型:- 对于图像 URL,Content-Type 应为
application/json
- 对于二进制图像数据,Content-Type 应为
application/octet-stream
或multipart/form-data
- 对于图像 URL,Content-Type 应为
InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter
。InvalidRequest - Image format is not valid
InvalidImageFormat - Image format is not valid
。 有关支持的图像格式,请参阅图像要求部分。
InvalidRequest - Analyze query is invalid
NotSupportedVisualFeature - Specified feature type is not valid
。 确保特征查询字符串具有有效的值。NotSupportedLanguage - The input language is not supported
。 根据下表,确保语言查询字符串具有对所选视觉特征有效的值。BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
401 PermissionDenied
401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource
。
404 Resource Not Found
404 - Resource not found
。 服务无法根据model-name
查询字符串提供 的名称找到自定义模型。
提示
使用 Azure AI 视觉时,可能会遇到服务强制实施的速率限制所导致的暂时性错误,或者网络中断等其他暂时性问题。 有关如何处理此类故障的信息,请参阅云设计模式指南中的重试模式,以及相关的断路器模式。