Zelfstudie: Afbeeldingsdetails extraheren met de Bing Afbeeldingen zoeken-API en C#
Waarschuwing
Op 30 oktober 2020 zijn de Zoeken in Bing API's verplaatst van Azure AI-services naar Zoeken in Bing Services. Deze documentatie is alleen bedoeld ter referentie. Zie de bing-documentatie voor zoeken-API voor bijgewerkte documentatie. Zie Een Zoeken in Bing-resource maken via de Azure Marketplace voor instructies over het maken van nieuwe Azure-resources voor Bing Search.
Er zijn meerdere eindpunten beschikbaar via de Bing Afbeeldingen zoeken-API. Het eindpunt /details
accepteert een POST-aanvraag met een afbeelding en kan uiteenlopende details over de afbeelding retourneren. Deze C#-toepassing verzendt een afbeelding met behulp van deze API en toont de details die door Bing worden geretourneerd. Daarbij gaat het om JSON-objecten, zoals de volgende:
In deze zelfstudie wordt het volgende uitgelegd:
- Het eindpunt
/details
voor Afbeeldingen zoeken gebruiken in eenPOST
-aanvraag - Headers voor de aanvraag opgeven
- URL-parameters gebruiken om resultaten op te geven
- De afbeeldingsgegevens uploaden en de
POST
-aanvraag verzenden - De JSON-resultaten op de console afdrukken
Vereisten
- Een versie van Visual Studio 2017 of hoger.
Een zoekaanvraag voor afbeeldingsdetails opstellen
Hieronder gaat het op het eindpunt /details
, dat POST-aanvragen accepteert met afbeeldingsgegevens in de hoofdtekst van de aanvraag. U kunt het volgende globale eindpunt gebruiken of het eindpunt aangepaste subdomein dat wordt weergegeven in de Azure-portal voor uw resource.
https://api.cognitive.microsoft.com/bing/v7.0/images/details
Bij het opstellen van de zoekaanvraag-URL volgt de parameter modules
het bovenstaande eindpunt. De parameter specificeert ook het type details dat de resultaten zullen bevatten:
modules=All
-
modules=RecognizedEntities
(zichtbare personen of plaatsen in de afbeelding)
Geef modules=All
in de POST-aanvraag op om JSON-tekst te krijgen die het volgende bevat:
-
bestRepresentativeQuery
- een Bing-query die afbeeldingen retourneert die lijken op de geüploade afbeelding -
detectedObjects
- gevonden objecten in de afbeelding -
image
- metagegevens voor de afbeelding -
imageInsightsToken
- een token voor latere GET-aanvragen dieRecognizedEntities
(zichtbare personen of plaatsen in de afbeelding) krijgen vanuit de afbeelding. -
imageTags
- tags voor de afbeelding -
pagesIncluding
- webpagina's die de afbeelding bevatten -
relatedSearches
- zoekopdrachten op basis van details in de afbeelding -
visuallySimilarImages
- vergelijkbare afbeeldingen op het web
Geef modules=RecognizedEntities
op in de POST-aanvraag om alleen imageInsightsToken
te krijgen, wat gebruikt kan worden in een daaropvolgende GET-aanvraag om personen of plaatsen in de afbeelding te identificeren.
Een WebClient-object maken en headers voor de API-aanvraag instellen
Maak een WebClient
-object en stel de headers in. Alle aanvragen aan de Bing Zoeken-API vereisen een Ocp-Apim-Subscription-Key
. Een POST
-aanvraag voor het uploaden van een afbeelding moet ook ContentType: multipart/form-data
opgeven.
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
De afbeelding uploaden en de resultaten weergeven
De methode UpLoadFile()
van de klasse WebClient
maakt gegevens op voor de POST
-aanvraag, inclusief het opmaken van RequestStream
en het aanroepen van HttpWebRequest
.
Roep WebClient.UpLoadFile()
aan met het eindpunt /details
en het afbeeldingsbestand dat moet worden geüpload. Gebruik het JSON-antwoord om een instantie van de SearchResult
-structuur te initialiseren, en sla het antwoord op.
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/details";
// The image to upload. Replace with your file and path.
const string imageFile = "your-image.jpg";
byte[] resp = client.UploadFile(uriBase + "?modules=All", imageFile);
var json = System.Text.Encoding.Default.GetString(resp);
// Create result object for return
var searchResult = new SearchResult()
{
jsonResult = json,
relevantHeaders = new Dictionary<String, String>()
};
Dit JSON-antwoord kan vervolgens worden afgedrukt op de console.
Een image insights token gebruiken in een aanvraag
Om de ImageInsightsToken
te gebruiken die met de resultaten van een POST
is geretourneerd, kunt u deze toevoegen aan een GET
-aanvraag. Bijvoorbeeld:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
Als de afbeelding identificeerbare personen of plaatsen bevat, zal deze aanvraag informatie daarover retourneren.