RechercheParImage

Microsoft Azure est une plateforme cloud avec plus de 200 produits pour trouver une solution à votre problème. Parmi ceux-ci, les services cognitifs sont des produits étonnants qui vous offrent de nombreuses fonctionnalités d'IA. Par exemple:

  • Détecteur d'anomalie
  • Modérateur de contenu
  • Personnalisateur
  • Compréhension de la langue
  • fabricant de QnA
  • Analyse de texte
  • Traducteur
  • Service de parole
  • Vision par ordinateur
  • Vision personnalisée
  • API de visage
  • Compte multi-services de services cognitifs

Avec ces ressources, n'importe quel développeur peut intégrer l'IA à ses applications sans apprentissage approfondi de l'apprentissage automatique. Tous ces éléments peuvent être utilisés via l'API REST, ce qui signifie que vous pouvez les implémenter dans n'importe quelle application moderne.

Qu'est-ce que l'API de recherche visuelle Bing ?

Avec l'API de recherche visuelle Bing, vous pouvez intégrer des fonctionnalités de recherche d'images dans votre application. Les utilisateurs pourront effectuer une recherche en fournissant une image et l'API de recherche Bing trouvera des images visuellement ou thématiquement similaires. En outre, il peut identifier des célébrités, des lieux, des objets et d'autres objets liés à l'image source. Vous pouvez même extraire des codes-barres et du texte à partir d'images. C'est une ressource assez puissante.

Comment puis-je obtenir la clé d'abonnement pour utiliser l'API de recherche visuelle Bing ?

Aller à Portail Azure et connectez-vous. Dans le portail, tapez « Bing » dans le champ de recherche et sélectionnez « Bing Search v7 » sur la place de marché. Entrez maintenant un nom, un abonnement et un groupe de ressources et créez une nouvelle ressource. Accédez ensuite à la ressource nouvellement créée et sous l'onglet "Clés et point de terminaison", vous trouverez deux clés d'abonnement. Utilisez cette clé à l'étape suivante.

Comment implémenter l'API de recherche visuelle Bing dans Delphi ?

Nous pouvons facilement implémenter l'API de recherche visuelle via les composants Delphi REST. Nous pouvons configurer l'API au moment de la conception en utilisant ces composants :

  • TRESTClient
  • TRESTRequest
  • TRESTResponse

Faites ce qui suit..

Créez une nouvelle application VCL et déposez un composant TRESTClient et définissez le type de contenu sur « application/json ». Déposez ensuite un composant « TRESRequest » et définissez la méthode sur « rmPOST ». Supprimez également un composant « TRESTResponse » pour obtenir la réponse. De plus, vous avez besoin d'un composant TIdHTTP pour télécharger des images dans la réponse.

L'URL de notre API est :

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

En outre, vous avez besoin d'un fichier image à publier avec la demande. Déposez donc un composant TOpenDialog pour ouvrir les fichiers image. Ajoutez un bouton pour rechercher des images.

Ajoutez maintenant du code pour l'événement OnClick

procédure TfrmMain.btnBrowseClick(Sender: TObject); var Image : TImage ; commencer sinon dlgOpenImage.Execute puis quitter ; strImgPath := dlgOpenImage.FileName; btnSearch.Enabled := strImgPath <> ''; Image := TPicture.Create; Picture.LoadFromFile(strImgPath); imgSource.Picture := Image; edImgPath.Text := strImgPath; finir;

Dans le bouton de recherche, nous ajoutons d'abord le "Clé d'abonnement Ocp-Apim" en tant que paramètre d'en-tête. Ensuite, nous ajoutons l'image à traiter en tant que paramètre pkFile du RESTRequest. Ensuite, nous exécutons la requête et analysons la réponse. La réponse est au format JSON. Nous pouvons utiliser les objets « TJSONObject » et « TJSONArray » pour analyser facilement la réponse. Ensuite, nous pouvons télécharger des images similaires et les afficher dans notre application Delphi.

Le code Delphi du bouton de recherche complet pour rechercher par image devrait ressembler à ceci

procédure TfrmMain.btnSearchClick(Sender: TObject); var lparam : paramètre Trestrequest; imgProcessed : bool ; jsonObj : TJSONObject ; jsonTags, jsonActions, jsonValue : TJSONArray ; MS : TMemoryStream ; Image : TImage ; I, x, y : entier ; image : TImage ; begin for i:=0 to ComponentCount-1 do if (Components[i] est TImage) then if (Components[i] as TImage).Parent=scrlbxImages then freeandnil(Components[i]); memResponse.Lines.Clear; RESTClient.BaseURL := edAPIURL.Text; RESTRequest.Method:=rmpost; imgProcessed := false; essayez RESTRequest.Params.Clear ; RESTresponse.RootElement := ''; lparam := RESTRequest.Params.AddItem; lparam.name := 'Ocp-Apim-Subscription-Key'; lparam.Value := edSubKey.Text; lparam.ContentType := ctNone; lparam.Kind := pkHTTPHEADER; //Celui-ci est important sinon le '==' obtiendra l'URL encodée lparam.Options := [poDoNotEncode]; lparam := RESTRequest.Params.AddItem; lparam.name := 'image'; lparam.Value := strImgPath; lparam.ContentType := ctIMAGE_JPEG; lparam.Kind := pkFile; lparam.Options := [poDoNotEncode]; RESTrequest.Execute; sinon RESTResponse.Status.Success alors showmessage(RESTResponse.StatusText + ' ' + inttostr(RESTResponse.StatusCode)) sinon begin memResponse.Lines.Add(RESTResponse.JSONText); jsonObj := RESTResponse.JSONValue as TJSONObject; jsonTags := jsonObj.Values['tags'] as TJSONArray ; pour I := 0 à jsonTags.Count - 1 commence jsonObj := jsonTags.Items[I] en tant que TJSONObject ; jsonActions := jsonObj.Values['actions'] as TJSONArray; pour x := 0 à jsonActions.Count - 1 commence jsonObj := jsonActions.Items[x] en tant que TJSONObject ; if jsonObj.Values['actionType'].Value = 'PagesInclusion' then begin jsonValue := (jsonObj.Values['data'] as TJSONObject).Values['value'] as TJSONArray; pour y := 0 à jsonValue.Count - 1 commence si y> 10 alors Break; jsonObj := jsonValue.Items[y] en tant que TJSONObject ; MS := TMemoryStream.Create; http.Get(StringReplace(jsonObj.Values['thumbnailUrl'].Value, 'https', 'http',[rfReplaceAll, rfIgnoreCase]), MS); MS.Position := 0; Image := TPicture.Create; Picture.LoadFromStream(MS); image := TImage.Create(self); image.Parent := scrlbxImages; image.Align := alTop; image.Hauteur := 180; image.Image := Image; image.Center := True; image.Proportionnel := true; MS.Free ; finir; finir; finir; finir; finir; finir enfin; finir;

Voici une capture d'écran de notre application de démonstration Visual Search Delphi terminée

Vous pouvez télécharger l'application de démonstration à partir de ce lien : https://github.com/checkdigits/SearchByImage_example

proche

Réduisez le temps de développement et accédez plus rapidement au marché avec RAD Studio, Delphi ou C ++ Builder.
Conception. Code. Compiler. Déployer.
Commencer l'essai gratuit   Mettre à jour aujourd'hui

   Édition communautaire Delphi gratuite   Édition communautaire gratuite de C ++ Builder