你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

移除图像中的背景

重要

此功能现已弃用。 2025 年 3 月 31 日,Azure AI 图像分析 4.0 分段 API 和背景消除服务将停用。 此日期之后,对此服务的所有请求都将失败。

开源 Florence 2 模型的细分功能或许可以满足ni 的需求。 它返回一个标记前景和背景之间差异的 alpha 图,但不会编辑原始图像来移除背景。 安装 Florence 2 模型并试用其区域细分功能。

若要获得齐全的背景移除功能,请考虑使用第三方实用工具,例如 BiRefNet

本文演示如何调用图像分析 4.0 API 来分割图像(分割前景与背景)。 它还介绍了如何分析返回的信息。

重要

背景移除只能通过直接 REST API 调用使用。 它无法通过 SDK 使用。

重要

后台移除仅在某些 Azure 区域中可用。 请参阅上市区域

先决条件

本指南假定你已成功按照快速入门页中提到的步骤进行操作。 这意味着:

  • 你已经创建了视觉资源 并获取了密钥和终结点 URL。
  • 你已成功对服务进行了 curl.exe 调用(或使用了替代工具)。 根据此处的示例修改 curl.exe 调用。

快速入门介绍如何从图像中提取视觉特征。 但是,这些概念与背景移除类似。 因此,从快速入门开始并做出修改可以帮到你。

向服务进行身份验证

若要对图像分析服务进行身份验证,需要计算机视觉密钥和终结点 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 视觉时,可能会遇到服务强制实施的速率限制所导致的暂时性错误,或者网络中断等其他暂时性问题。 有关如何处理此类故障的信息,请参阅云设计模式指南中的重试模式,以及相关的断路器模式

下一步