SucheNachBild

Microsoft Azure ist eine Cloud-Plattform mit mehr als 200 Produkten, um eine Lösung für Ihr Problem zu finden. Unter diesen sind Cognitive Services einige erstaunliche Produkte, die Ihnen viele KI-Funktionen bieten. Zum Beispiel:

  • Anomalie-Detektor
  • Inhaltsmoderator
  • Personalisierung
  • Sprachverständnis
  • QnA-Hersteller
  • Textanalyse
  • Übersetzer
  • Sprachdienst
  • Computer Vision
  • Benutzerdefinierte Vision
  • Gesichts-API
  • Cognitive Services-Multidienstkonto

Mit diesen Ressourcen kann jeder Entwickler KI in seine Anwendungen einbringen, ohne tiefes Lernen des maschinellen Lernens. All dies kann über die REST-API verwendet werden, was bedeutet, dass Sie diese in jeder modernen Anwendung implementieren können.

Was ist die Bing Visual Search-API?

Mit der Bing Visual Search API können Sie Bildsuchfunktionen in Ihre Anwendung integrieren. Benutzer können suchen, indem sie ein Bild bereitstellen, und die Bing-Such-API findet Bilder, die visuell oder thematisch ähnlich sind. Außerdem können Prominente, Orte, Gegenstände und andere verwandte Objekte mit dem Quellbild identifiziert werden. Sie können sogar Barcodes und Text aus Bildern extrahieren. Es ist eine ziemlich mächtige Ressource.

Wie erhalte ich den Abonnementschlüssel, um die Bing Visual Search API zu verwenden?

Gehe zu Azure-Portal und melden Sie sich an. Geben Sie im Portal „Bing“ in das Suchfeld ein und wählen Sie auf dem Marktplatz „Bing Search v7“ aus. Geben Sie nun einen Namen, ein Abonnement und eine Ressourcengruppe ein und erstellen Sie eine neue Ressource. Gehen Sie dann zur neu erstellten Ressource und finden Sie unter der Registerkarte „Schlüssel und Endpunkt“ zwei Abonnementschlüssel. Verwenden Sie diesen Schlüssel im nächsten Schritt.

Wie implementiere ich die Bing Visual Search API in Delphi?

Wir können leicht Implementieren Sie die API für die visuelle Suche über die Delphi-REST-Komponenten. Wir können die API zur Entwurfszeit mit diesen Komponenten einrichten:

  • TRESTClient
  • TRESTRequest
  • TRESTResponse

Mach Folgendes..

Erstellen Sie eine neue VCL-Anwendung, legen Sie eine TRESTClient-Komponente ab und legen Sie den Inhaltstyp auf „application/json“ fest. Legen Sie dann eine „TRESTRequest“-Komponente ab und setzen Sie die Methode auf „rmPOST“. Legen Sie außerdem eine „TRESTResponse“-Komponente ab, um die Antwort zu erhalten. Außerdem benötigen Sie eine TIdHTTP-Komponente, um Bilder in der Antwort herunterzuladen.

Unsere API-URL lautet:

https://api.bing.microsoft.com/v7.0/images/visualsearch/

Außerdem benötigen Sie eine Bilddatei, um mit der Anfrage zu posten. Legen Sie also eine TOpenDialog-Komponente ab, um Bilddateien zu öffnen. Fügen Sie eine Schaltfläche hinzu, um nach Bildern zu suchen.

Fügen Sie nun etwas Code für das OnClick-Ereignis hinzu

Prozedur TfrmMain.btnBrowseClick(Sender: TObject); var Bild: TBild; beginnen, wenn nicht dlgOpenImage.Execute, dann beenden; strImgPath := dlgOpenImage.FileName; btnSearch.Enabled := strImgPath <> ''; Bild := TPicture.Create; Picture.LoadFromFile(strImgPath); imgSource.Picture := Bild; edImgPath.Text := strImgPath; Ende;

In der Suchschaltfläche fügen wir zunächst das „Ocp-Apim-Abonnement-Schlüssel“ als Header-Parameter. Dann fügen wir das zu verarbeitende Bild als pkFile-Parameter des RESTRequest hinzu. Dann führen wir die Anfrage aus und analysieren die Antwort. Die Antwort liegt im JSON-Format vor. Wir können die Objekte „TJSONObject“ und „TJSONArray“ verwenden, um die Antwort einfach zu analysieren. Dann können wir ähnliche Bilder herunterladen und in unserer Delphi-Anwendung anzeigen.

Der Delphi-Code der vollständigen Suchschaltfläche für die Suche nach Bildern sollte wie folgt aussehen:

Prozedur TfrmMain.btnSearchClick(Sender: TObject); var lparam : Trestrequestparameter; imgProcessed: bool; jsonObj: TJSONObject; jsonTags, jsonActions, jsonValue: TJSONArray; MS: TMemoryStream; Bild: TBild; I, x, y: ganze Zahl; Bild: TImage; begin for i:=0 to ComponentCount-1 do if (Components[i] is TImage) then if (Components[i] as TImage).Parent=scrlbxImages then freeandnil(Components[i]); memResponse.Lines.Clear; RESTClient.BaseURL := edAPIURL.Text; RESTRequest.Methode:=rmpost; imgProcessed := false; versuchen Sie RESTRequest.Params.Clear; RESTResponse.RootElement := ''; lparam := RESTRequest.Params.AddItem; lparam.name := 'Ocp-Apim-Abonnement-Schlüssel'; lparam.Wert := edSubKey.Text; lparam.ContentType := ctNone; lparam.Kind := pkHTTPHEADER; //Dieses ist wichtig, sonst wird das '==' URL kodiert erhalten lparam.Options := [poDoNotEncode]; lparam := RESTRequest.Params.AddItem; lparam.name := 'Bild'; lparam.Wert := strImgPath; lparam.ContentType := ctIMAGE_JPEG; lparam.Kind := pkFile; lparam.Optionen := [poDoNotEncode]; RESRequest.Execute; wenn nicht RESTResponse.Status.Success, dann showmessage(RESTResponse.StatusText + ' ' + inttostr(RESTResponse.StatusCode)) else begin memResponse.Lines.Add(RESTResponse.JSONText); jsonObj := RESTResponse.JSONValue as TJSONObject; jsonTags := jsonObj.Values['tags'] as TJSONArray; for I := 0 to jsonTags.Count - 1 do begin jsonObj := jsonTags.Items[I] as TJSONObject; jsonActions := jsonObj.Values['actions'] as TJSONArray; for x := 0 to jsonActions.Count - 1 do begin jsonObj := jsonActions.Items[x] as TJSONObject; if jsonObj.Values['actionType'].Value = 'PagesIncluding' then begin jsonValue := (jsonObj.Values['data'] as TJSONObject).Values['value'] as TJSONArray; for y := 0 to jsonValue.Count - 1 do begin if y> 10 then Break; jsonObj := jsonValue.Items[y] as TJSONObject; MS := TMemoryStream.Create; http.Get(StringReplace(jsonObj.Values['thumbnailUrl'].Value, 'https', 'http',[rfReplaceAll, rfIgnoreCase]), MS); MS.Position := 0; Bild := TPicture.Create; Picture.LoadFromStream(MS); image := TImage.Create(self); image.Parent := scrlbxImages; image.Align := alTop; Bild.Höhe := 180; Bild.Bild := Bild; image.Center := True; image.Proportional := true; MS.Free; Ende; Ende; Ende; Ende; Ende; endlich ende; Ende;

Hier ist ein Screenshot unserer fertigen Demo Visual Search Delphi-Anwendung

Sie können die Demo-Anwendung unter diesem Link herunterladen: https://github.com/checkdigits/SearchByImage_example

schließen

Reduzieren Sie die Entwicklungszeit und kommen Sie mit RAD Studio, Delphi oder C ++ Builder schneller auf den Markt.
Design. Code. Kompilieren. Bereitstellen.
Kostenlos testen   Upgrade heute

   Kostenlose Delphi Community Edition   Kostenlose C ++ Builder Community Edition