Rimuovere lo sfondo nelle immagini
Importante
Questa funzionalità è ora deprecata. Il 10 gennaio 2025, l'API segmento di Analisi immagini di Intelligenza artificiale di Azure 4.0 e il servizio di rimozione in background verranno ritirati. Tutte le richieste a questo servizio avranno esito negativo dopo questa data.
Per mantenere un funzionamento senza problemi dei modelli, installare il modello open source Firenze 2 e utilizzare la relativa funzionalità Region to segmentation, che consente un'operazione di rimozione in background simile.
Il presente articolo illustra come richiamare l'API Analisi immagini 4.0 per segmentare un'immagine (separare il primo piano dallo sfondo). Inoltre, spiega come analizzare le informazioni restituite.
Importante
Rimuovi sfondo è disponibile solo tramite chiamate API REST dirette. Non è disponibile tramite gli SDK.
Prerequisiti
Questa guida presuppone che siano stati eseguiti correttamente i passaggi indicati nella pagina di avvio rapido. Ciò significa:
- È stata creata una risorsa di Visione ottenendo una chiave e l'URL dell'endpoint.
- È stata effettuata una chiamata
curl.exe
al servizio (o è stato usato uno strumento alternativo). Modificare la chiamatacurl.exe
in base agli esempi riportati qui.
L'avvio rapido illustra come estrarre le funzionalità visive da un'immagine. Tuttavia, i concetti sono simili alla rimozione dello sfondo. Di conseguenza, è possibile iniziare con l'avvio rapido e apportare modifiche.
Importante
Rimuovi sfondo è disponibile solo in determinate aree di Azure. Vedere Disponibilità a livello di area
Autenticazione per il servizio
Per eseguire l'autenticazione con il servizio Analisi immagini, è necessario disporre di una chiave Visione artificiale e di un URL dell'endpoint.
Suggerimento
Non includere la chiave direttamente nel codice e non renderla mai pubblica. Vedere l'articolo sulla sicurezza dei Servizi di Azure AI per altre opzioni di autenticazione, ad esempio Azure Key Vault.
L'autenticazione viene eseguita aggiungendo l'intestazione della richiesta HTTP Ocp-Apim-Subscription-Key e impostandola sulla chiave di Visione. La chiamata viene effettuata all'URL <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview
, dove <endpoint>
è l'URL univoco dell'endpoint di Visione artificiale. Vedere la sezione Selezionare una modalità per un'altra stringa di query aggiunta a questo URL.
Selezionare l'immagine che si desidera analizzare
Il codice riportato in questa guida si avvale di immagini remote a cui fa riferimento l'URL. È possibile provare autonomamente immagini diverse per visualizzare la capacità completa delle funzionalità di Analisi delle immagini.
Quando si analizza un'immagine remota, si specifica l'URL dell'immagine formattando il corpo della richiesta, nel modo seguente: {"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}
. Content-Type deve essere application/json
.
Per analizzare un'immagine locale, inserire i dati dell'immagine binaria nel corpo della richiesta HTTP. Content-Type deve essere application/octet-stream
o multipart/form-data
.
Selezionare una modalità
Impostare la modalità stringa di query su uno di questi due valori. Questa stringa di query è obbligatoria per eseguire la segmentazione delle immagini.
Parametro URL | Valore | Descrizione |
---|---|---|
mode |
backgroundRemoval |
Restituisce un'immagine dell'oggetto rilevato in primo piano con uno sfondo trasparente. |
mode |
foregroundMatting |
Restituisce un'immagine alfa opaco in scala di grigi che mostra l'opacità dell'oggetto rilevato in primo piano. |
Un URL popolato per backgroundRemoval avrà un aspetto simile al seguente: <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval
Ottenere risultati dal servizio
In questa sezione si spiega come effettuare la chiamata API e analizzare i risultati.
Il servizio restituisce una risposta HTTP 200
in caso di riuscita di Content-Type: image/png
, il corpo contiene l'immagine PNG restituita sotto forma di flusso binario.
Si supponga, ad esempio, di eseguire la rimozione dello sfondo nell'immagine seguente:
In caso di riuscita di una chiamata di rimozione sfondo, la seguente immagine PNG a quattro canali è la risposta per la modalità backgroundRemoval
:
La seguente immagine PNG a un canale è la risposta per la modalità foregroundMatting
:
L'API restituisce un'immagine con le stesse dimensioni dell'originale per la modalità foregroundMatting
, ma al massimo 16 megapixel (mantenendo le proporzioni dell'immagine) per la modalità backgroundRemoval
.
Codici di errore
In caso di errore, la risposta del servizio Analisi immagini contiene un payload JSON che include un codice di errore e un messaggio di errore. Potrebbe anche includere altri dettagli sotto forma di codice di errore interno e di messaggio. Ad esempio:
{
"error":
{
"code": "InvalidRequest",
"message": "Analyze query is invalid.",
"innererror":
{
"code": "NotSupportedVisualFeature",
"message": "Specified feature type is not valid"
}
}
}
Di seguito è riportato un elenco degli errori più comuni e delle relative cause. Gli elementi dell’elenco vengono presentati nel formato seguente:
- Codice di risposta HTTP
- Codice di errore e messaggio di errore nella risposta JSON
- [Facoltativo] Codice di errore interno e messaggio di errore nella risposta JSON
- Codice di errore e messaggio di errore nella risposta JSON
Elenco degli errori più comuni:
400 Bad Request
InvalidRequest - Image URL is badly formatted or not accessible
. Assicurarsi che l'URL dell'immagine sia valido e accessibile pubblicamente.InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes
. Ridurre le dimensioni dell'immagine comprimendola e/o ridimensionandola, quindi inviare nuovamente la richiesta.InvalidRequest - The feature 'Caption' is not supported in this region
. La funzionalità è supportata solo in aree di Azure specifiche. Per l'elenco delle aree di Azure supportate, vedere Prerequisiti di avvio rapido.InvalidRequest - The provided image content type ... is not supported
. L'intestazione HTTP Content-Type nella richiesta non è un tipo consentito:- Per un URL di immagine, Content-Type deve essere
application/json
- Per i dati di un'immagine binaria, Content-Type deve essere
application/octet-stream
omultipart/form-data
- Per un URL di immagine, Content-Type deve essere
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
. Vedere la sezione Requisiti delle immagini per conoscere i formati immagine supportati.
InvalidRequest - Analyze query is invalid
NotSupportedVisualFeature - Specified feature type is not valid
. Assicurarsi che la stringa di query features abbia un valore valido.NotSupportedLanguage - The input language is not supported
. Assicurarsi che la stringa di query language abbia un valore valido per la funzionalità visiva selezionata, in base alla tabella seguente.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
. Il servizio non è riuscito a trovare il modello personalizzato in base al nome fornito dalla stringa di querymodel-name
.
Suggerimento
Durante l'uso di Visione di Azure AI, potrebbero verificarsi errori temporanei causati dai limiti di velocità applicati dal servizio, o altri problemi temporanei come interruzioni della rete. Per informazioni sulla gestione di questi tipi di errori, vedere Modello di ripetizione dei tentativi nella guida Modelli di progettazione cloud e l'articolo correlato Modello a interruttore.