Share via


Quitar el fondo en imágenes

En este artículo se muestra cómo llamar a la API de Análisis de imágenes  4.0 para segmentar una imagen (separa el primer plano del fondo). También muestra cómo analizar la información devuelta.

Importante

La eliminación en segundo plano solo está disponible a través de llamadas directas a la API REST. No está disponible a través de los SDK.

Requisitos previos

En esta guía se asume que ha seguido correctamente los pasos mencionados en la página de inicio rápido. Esto significa:

  • Ha creado un recurso de Visión y se ha obtenido una clave y una dirección URL del punto de conexión.
  • Ha realizado correctamente una curl.exellamada al servicio (o ha utilizado una herramienta alternativa). La llamada curl.exe se modifica en función de los ejemplos aquí.

En el inicio rápido se muestra cómo extraer características visuales de una imagen. Sin embargo, los conceptos son similares a la eliminación en segundo plano. Por lo tanto, se beneficia de comenzar con el inicio rápido y realizar modificaciones.

Importante

La eliminación del fondo solo está disponible en las siguientes regiones de Azure: Este de EE. UU., Centro de Francia, Centro de Corea del Sur, Norte de Europa, Sudeste Asiático, Oeste de Europa, Oeste de EE. UU.

Autenticación en el servicio

Para autenticarse en el servicio Image Analysis, necesitará una clave de Computer Vision y una dirección URL del punto de conexión.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de los servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

La autenticación se realiza agregando el encabezado de solicitud HTTP Ocp-Apim-Subscription-Key y estableciéndolo en la clave de visión. La llamada se realiza a la dirección URL <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview, donde <endpoint> es la dirección URL única del punto de conexión de Computer Vision. Consulte la sección Seleccionar un modo para ver otra cadena de consulta que se agrega a esta dirección URL.

Seleccione la imagen que se vaya a analizar

El código de esta guía usa imágenes remotas referenciadas por URL. Es posible que desee probar diferentes imágenes por su cuenta para ver toda la capacidad de las funciones de análisis de imágenes.

Al analizar una imagen remota, se especifica la URL de la imagen formateando el cuerpo de la petición de la siguiente manera: {"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}. El Content-Type debería ser application/json.

Para analizar una imagen local, se ponen los datos binarios de la imagen en el cuerpo de la petición HTTP. El Content-Type debería ser application/octet-stream o multipart/form-data.

Seleccionar un modo

Establezca el modo de cadena de consulta en uno de estos dos valores. Esta cadena de consulta es obligatoria si desea realizar la segmentación de imágenes.

Parámetro URL Value Descripción
mode backgroundRemoval Genera una imagen del objeto en primer plano detectado con un fondo transparente.
mode foregroundMatting Genera una imagen alfa mate en escala de grises que muestra la opacidad del objeto en primer plano detectado.

Una dirección URL rellenada para backgroundRemoval tendría este aspecto: <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval

Obtención de resultados a partir del servicio

En esta sección se muestra cómo realizar la llamada API y analizar los resultados.

El servicio devuelve una respuesta HTTP 200 si tiene éxito con Content-Type: image/png, y el cuerpo contiene la imagen PNG devuelta en forma de secuencia binaria.

Por ejemplo, supongamos que la eliminación de fondo se ejecuta en la siguiente imagen:

Foto de una ciudad cerca del agua.

En una llamada correcta de eliminación en segundo plano, la siguiente imagen PNG de cuatro canales es la respuesta para el modo backgroundRemoval:

Foto de una ciudad cerca del agua; el cielo es transparente.

La siguiente imagen PNG de un canal es la respuesta para el modo foregroundMatting:

Alfa mate de un horizonte urbano.

La API devuelve una imagen con el mismo tamaño que la original para el modo foregroundMatting, pero como máximo 16 megapíxeles (conservando la relación de aspecto de la imagen) para el modo backgroundRemoval.

Códigos de error

En caso de error, la respuesta del servicio Image Analysis contendrá una carga JSON que incluye un código de error y un mensaje de error. También puede incluir otros detalles en forma de código de error interno y mensaje. Por ejemplo:

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

A continuación, se muestra una lista de errores comunes y sus causas. Los elementos de lista se presentan en el siguiente formato:

  • Código de respuesta HTTP
    • Código de error y mensaje en la respuesta JSON
      • [Opcional] Código de error interno y mensaje en la respuesta JSON

Lista de errores comunes:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible. Asegúrese de que la dirección URL de la imagen sea válida y accesible públicamente.
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes. Reduzca el tamaño de la imagen comprimiéndola o redimensionándola y vuelva a enviar la solicitud.
    • InvalidRequest - The feature 'Caption' is not supported in this region. Esta característica solo se admite en determinadas regiones de Azure. Consulte Requisitos previos de inicio rápido para obtener la lista de regiones de Azure admitidas.
    • InvalidRequest - The provided image content type ... is not supported. El encabezado HTTP Content-Type de la solicitud no es un tipo permitido:
      • Para una dirección URL de imagen, Content-Type debería ser application/json
      • En el caso de los datos de imagen binarios, Content-Type debería ser application/octet-stream o 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. Consulte la sección Requisitos de imagen para conocer los formatos de imagen admitidos.
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid. Asegúrese de que la cadena de consulta de características tenga un valor válido.
      • NotSupportedLanguage - The input language is not supported. Asegúrese de que la cadena de consulta de lenguaje tenga un valor válido para la característica visual seleccionada, en función de la tabla siguiente.
      • 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. El servicio no pudo encontrar el modelo personalizado en función del nombre proporcionado por la cadena de consulta model-name.

Sugerencia

Al trabajar con Visión de Azure AI, puede encontrar errores transitorios producidos por límites de frecuencia aplicados por el servicio u otros problemas transitorios, como interrupciones de red. Para información sobre cómo controlar estos tipos de errores, consulte la sección sobre el patrón Retry en la guía de patrones de diseño en la nube y el patrón Circuit Breaker relacionado.

Pasos siguientes

Conceptos de eliminación en segundo plano