Microsoft Azure is a cloud platform with more than 200 products to find a solution to your problem. Among those, Cognitive Services are some amazing products that provide you with many AI functionalities. For example:
- 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
With these resources, any developer can incorporate AI into their applications without the need for deep learning of machine learning. All of these can be accessed via the REST API and the Windows IDE, allowing them to be used in any modern application.
Table des matières
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 la zone de recherche et sélectionnez « Bing Search v7 » sur le 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
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TfrmMain.btnBrowseClick(Sender: TObject); var Picture: TPicture; commencer if ne pas dlgOpenImage.Execute then exit; strImgPath := dlgOpenImage.FileName; btnSearch.Enabled := strImgPath <> ''; Picture := TPicture.Create; Picture.LoadFromFile(strImgPath); imgSource.Picture := Picture; edImgPath.Text := strImgPath; end; |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
procedure TfrmMain.btnSearchClick(Sender: TObject); var lparam : Trestrequestparameter; imgProcessed: bool; jsonObj: TJSONObject; jsonTags, jsonActions, jsonValue: TJSONArray; MS: TMemoryStream; Picture: TPicture; I, x, y: integer; image: TImage; commencer for je:=0 to ComponentCount-1 do if (Composants[je] is TImage) then if (Composants[je] as TImage).Parent=scrlbxImages then freeandnil(Composants[je]); memResponse.Lines.Clair; RESTClient.BaseURL := edAPIURL.Text; RESTRequest.Method:=rmpost; imgProcessed := false; try RESTRequest.Params.Clair; RESTResponse.RootElement := ''; lparam := RESTRequest.Params.AddItem; lparam.name := 'Ocp-Apim-Subscription-Key'; lparam.Value := edSubKey.Text; lparam.ContentType := ctNone; lparam.Kind := pkHTTPHEADER; //This one is Important otherwise the '==' will get url encoded 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; if ne pas RESTResponse.Status.Success then showmessage(RESTResponse.StatusText + ' ' + inttostr(RESTResponse.StatusCode)) autre commencer memResponse.Lines.Add(RESTResponse.JSONText); jsonObj := RESTResponse.JSONValue as TJSONObject; jsonTags := jsonObj.Values['tags'] as TJSONArray; for I := 0 to jsonTags.Count - 1 do commencer jsonObj := jsonTags.Items[I] as TJSONObject; jsonActions := jsonObj.Values['actions'] as TJSONArray; for x := 0 to jsonActions.Count - 1 do commencer jsonObj := jsonActions.Items[x] as TJSONObject; if jsonObj.Values['actionType'].Value = 'PagesIncluding' then commencer jsonValue := (jsonObj.Values['data'] as TJSONObject).Values['value'] as TJSONArray; for y := 0 to jsonValue.Count - 1 do commencer 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; Picture := TPicture.Create; Picture.LoadFromStream(MS); image := TImage.Create(self); image.Parent := scrlbxImages; image.Align := alTop; image.Height := 180; image.Picture := Picture; image.Center := True; image.Proportional := true; MS.Free; end; end; end; end; end; finally end; end; |
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