Compartilhar via


Remover a tela de fundo em imagens

Importante

Esse recurso agora está preterido. Em 31 de março de 2025, a API de Segmento da Análise de Imagem 4.0 da IA do Azure e o serviço de remoção de plano de fundo serão desativados. Todas as solicitações para esse serviço falharão após essa data.

Para manter um bom funcionamento de seus modelos, instale o modelo Florence 2 de código aberto e use seu recurso de Região para segmentação, o que permite uma operação de remoção de plano de fundo semelhante.

Este artigo demonstra como chamar a API de Análise de Imagem 4.0 para segmentar uma imagem (separar o primeiro plano do segundo plano). Ele também mostra como analisar as informações retornadas.

Importante

A remoção de segundo plano só está disponível por meio de chamadas diretas à API REST. Ela não está disponível por meio dos SDKs.

Pré-requisitos

Este guia pressupõe que você seguiu corretamente as etapas mencionadas na página de início rápido. Isso significa:

  • Você criou um recurso do serviço Visão e obteve uma chave e um URL do ponto de extremidade.
  • Você fez uma chamada curl.exe para o serviço com sucesso (ou usou uma ferramenta alternativa). Você modifica a chamada curl.exe com base nos exemplos aqui.

O início rápido mostra como extrair recursos visuais de uma imagem. No entanto, os conceitos são semelhantes à remoção de segundo plano. Portanto, você se beneficia de começar com o início rápido e fazer modificações.

Importante

A remoção em segundo plano só está disponível em determinadas regiões do Azure. Confira a Disponibilidade de região

Autenticar-se no serviço

Para se autenticar no serviço de Análise de Imagem, você precisa de uma chave de Pesquisa Visual Computacional e um URL do ponto de extremidade.

Dica

Não inclua a chave diretamente no código e nunca a divulgue publicamente. Confira o artigo de segurança dos serviços de IA do Azure para obter mais opções de autenticação como o Azure Key Vault.

A autenticação é feita adicionando o cabeçalho de solicitação HTTP Ocp-Apim-Subscription-Key e definindo-o como sua chave de visão. A chamada é feita para a URL <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview, em que <endpoint> é a URL exclusiva do ponto de extremidade da Pesquisa Visual Computacional. Confira a seção Selecionar um modo para outra cadeia de caracteres de consulta que você adicionar a esse URL.

Selecione a imagem a ser analisada

O código neste guia usa imagens remotas referenciadas por URL. Talvez você queira experimentar imagens diferentes por conta própria para ver toda a funcionalidade dos recursos da Análise de Imagem.

Ao analisar uma imagem remota, especifique a URL da imagem formatando o corpo da solicitação como este: {"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}. O Content-Type deve ser application/json.

Para analisar uma imagem local, coloque os dados da imagem binária no corpo da solicitação HTTP. O Content-Type deve ser application/octet-stream ou multipart/form-data.

Selecionar um modo

Defina a cadeia de caracteres de consulta mode como um desses dois valores. Essa cadeia de caracteres de consulta será obrigatória se você quiser fazer a segmentação de imagem.

Parâmetro da URL Valor Descrição
mode backgroundRemoval Gera uma imagem do objeto de primeiro plano detectado com uma tela de fundo transparente.
mode foregroundMatting Gera uma imagem fosca alfa em escala de cinza mostrando a opacidade do objeto do primeiro plano detectado.

Uma URL preenchida para backgroundRemoval teria esta aparência: <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval

Obter resultados do serviço

Esta seção mostra como fazer a chamada à API e analisar os resultados.

O serviço retorna uma resposta HTTP 200 em caso de sucesso com Content-Type: image/png, e o corpo que contém a imagem PNG retornada na forma de um fluxo binário.

Por exemplo, suponha que a remoção de plano de fundo seja executada na imagem a seguir:

Foto de uma cidade perto da água.

Em uma chamada de remoção de plano de fundo bem-sucedida, a seguinte imagem PNG de quatro canais é a resposta para o modo backgroundRemoval:

Foto de uma cidade perto da água; o céu é transparente.

A seguinte imagem PNG de um canal é a resposta para o modo foregroundMatting:

Alfa fosco de um horizonte da cidade.

A API retorna uma imagem do mesmo tamanho da original para o modo foregroundMatting, mas com no máximo 16 megapixels (preservando a taxa de proporção da imagem) do modo backgroundRemoval.

Códigos do Erro

Em caso de erro, a resposta do serviço de Análise de Imagem contém um conteúdo JSON que inclui um código de erro e uma mensagem de erro. Também pode incluir outros detalhes na forma de código de erro interno e mensagem. Por exemplo:

{
    "error":
    {
        "code": "InvalidRequest",
        "message": "Analyze query is invalid.",
        "innererror":
        {
            "code": "NotSupportedVisualFeature",
            "message": "Specified feature type is not valid"
        }
    }
}

A seguir há uma lista de erros comuns e suas causas. Os itens de lista são apresentados no seguinte formato:

  • Código de resposta HTTP
    • Código de erro e mensagem na resposta JSON
      • [Opcional] Código de erro interno e mensagem na resposta JSON

Lista de erros comuns:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible. Verifique se o URL da imagem é válido e acessível publicamente.
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes. Reduza o tamanho da imagem compactando-a e/ou redimensionando e reenvie sua solicitação.
    • InvalidRequest - The feature 'Caption' is not supported in this region. O recurso só tem suporte em regiões específicas do Azure. Confira Pré-requisitos de início rápido para obter a lista de regiões do Azure com suporte.
    • InvalidRequest - The provided image content type ... is not supported. O cabeçalho HTTP Content-Type na solicitação não é um tipo permitido:
      • Para um URL de imagem, o Content-Type deve ser application/json
      • Para dados de imagem binários, o Content-Type deve ser application/octet-stream ou multipart/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. Confira a seção Requisitos de imagem para obter formatos de imagem com suporte.
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid. Verifique se a cadeia de caracteres de consulta features tem um valor válido.
      • NotSupportedLanguage - The input language is not supported. Verifique se a cadeia de caracteres de consulta language tem um valor válido para o recurso visual selecionado, com base na tabela a seguir.
      • 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. O serviço não pôde localizar o modelo personalizado com base no nome fornecido pela cadeia de caracteres de consulta model-name.

Dica

Ao trabalhar com a Visão de IA do Azure, talvez você encontre falhas transitórias causadas por limites de taxa impostos pelo serviço ou outros problemas transitórios, como interrupções de rede. Para obter informações sobre como lidar com esses tipos de falhas, confira Padrão de repetição no guia Padrões de Design de Nuvem e o padrão de Disjuntor relacionado.

Próximas etapas

Conceitos de remoção de tela de fundo