你当前正在访问 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-streammultipart/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 响应中的内部错误代码和消息

常见错误表:

  • 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-streammultipart/form-data
    • 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 视觉时,可能会遇到服务强制实施的速率限制所导致的暂时性错误,或者网络中断等其他暂时性问题。 有关如何处理此类故障的信息,请参阅云设计模式指南中的重试模式,以及相关的断路器模式

后续步骤

背景移除概念