SearchByImage

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:

  • Detector de anomalias
  • Moderador de conteúdo
  • Personalizador
  • Compreensão da linguagem
  • Fabricante de QnA
  • Analítica de texto
  • Tradutor
  • Serviço de fala
  • Visão computacional
  • Visão personalizada
  • Face API
  • Conta multisserviço de serviços cognitivos

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.

O que é a API de pesquisa visual do Bing?

Com a API de pesquisa visual do Bing, você pode integrar funcionalidades de pesquisa de imagens em seu aplicativo. Os usuários poderão pesquisar fornecendo uma imagem e a API de pesquisa do Bing encontrará imagens visualmente ou temáticas semelhantes. Além disso, ele pode identificar celebridades, lugares, itens e outros objetos relacionados à imagem de origem. Você pode até extrair códigos de barras e texto de imagens. É um recurso muito poderoso.

Como posso obter a chave de assinatura para usar a API do Bing Visual Search?

Vamos para Portal Azure e entrar. No portal, digite “Bing” na caixa de pesquisa e selecione “Bing Search v7” no mercado. Agora insira um nome, assinatura e um grupo de recursos e crie um novo recurso. Em seguida, vá para o recurso recém-criado e na guia “Chaves e endpoint”, você encontrará duas chaves de assinatura. Use essa chave na próxima etapa.

Como faço para implementar a API de pesquisa visual do Bing no Delphi?

Nós podemos facilmente implementar a API de pesquisa visual por meio dos componentes REST do Delphi. Podemos configurar a API em tempo de design usando estes componentes:

  • TRESTClient
  • TRESTRequest
  • TRESTResponse

Faça o seguinte..

Crie um novo aplicativo VCL, elimine um componente TRESTClient e defina o tipo de conteúdo como “application / json”. Em seguida, elimine um componente “TRESTRequest” e defina o método como “rmPOST”. Além disso, elimine um componente “TRESTResponse” para obter a resposta. Além disso, você precisa de um componente TIdHTTP para baixar imagens na resposta.

Nosso URL da API é:

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

Além disso, você precisa de um arquivo de imagem para postar com a solicitação. Portanto, solte um componente TOpenDialog para abrir arquivos de imagem. Adicione um botão para navegar pelas imagens.

Agora adicione algum código para o evento OnClick

procedimento TfrmMain.btnBrowseClick (Sender: TObject); var Imagem: TPicture; comece se não dlgOpenImage.Execute então saia; strImgPath: = dlgOpenImage.FileName; btnSearch.Enabled: = strImgPath <> ''; Imagem: = TPicture.Create; Picture.LoadFromFile (strImgPath); imgSource.Picture: = Imagem; edImgPath.Text: = strImgPath; fim;

No botão de pesquisa, primeiro, adicionamos o “Ocp-Apim-Subscription-Key”Como um parâmetro de cabeçalho. Em seguida, adicionamos a imagem a ser processada como um parâmetro pkFile do RESTRequest. Em seguida, executamos a solicitação e analisamos a resposta. A resposta está no formato JSON. Podemos usar os objetos “TJSONObject” e “TJSONArray” para analisar facilmente a resposta. Então, podemos baixar imagens semelhantes e exibi-las em nosso aplicativo Delphi.

O código Delphi do botão de pesquisa completo para pesquisar por imagem deve ser parecido com este

procedimento TfrmMain.btnSearchClick (Sender: TObject); var lparam: Trestrequestparameter; imgProcessed: bool; jsonObj: TJSONObject; jsonTags, jsonActions, jsonValue: TJSONArray; MS: TMemoryStream; Foto: TPicture; I, x, y: inteiro; imagem: 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.Method: = rmpost; imgProcessed: = false; tente 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; // Este é importante, caso contrário, '==' obterá a codificação url lparam.Options: = [poDoNotEncode]; lparam: = RESTRequest.Params.AddItem; lparam.name: = 'imagem'; lparam.Value: = strImgPath; lparam.ContentType: = ctIMAGE_JPEG; lparam.Kind: = pkFile; lparam.Options: = [poDoNotEncode]; RESTRequest.Execute; se não RESTResponse.Status.Success then showmessage (RESTResponse.StatusText + '' + inttostr (RESTResponse.StatusCode)) else begin memResponse.Lines.Add (RESTResponse.JSONText); jsonObj: = RESTResponse.JSONValue as TJSONObject; jsonTags: = jsonObj.Values ['tags'] como TJSONArray; para I: = 0 para jsonTags.Count - 1 comece jsonObj: = jsonTags.Items [I] como TJSONObject; jsonActions: = jsonObj.Values ['ações'] como TJSONArray; para x: = 0 para jsonActions.Count - 1 comece jsonObj: = jsonActions.Items [x] como TJSONObject; if jsonObj.Values ['actionType']. Value = 'PagesIncluding' então comece jsonValue: = (jsonObj.Values ['data'] as TJSONObject) .Values ['value'] as TJSONArray; para y: = 0 a jsonValue.Count - 1 começa se y> 10 então Break; jsonObj: = jsonValue.Items [y] como TJSONObject; MS: = TMemoryStream.Create; http.Get (StringReplace (jsonObj.Values ['thumbnailUrl']. Value, 'https', 'http', [rfReplaceAll, rfIgnoreCase]), MS); MS.Posição: = 0; Imagem: = TPicture.Create; Picture.LoadFromStream (MS); imagem: = TImage.Create (self); image.Parent: = scrlbxImages; image.Align: = alTop; imagem.Altura: = 180; imagem.Pictura: = Imagem; image.Center: = True; imagem.Proporcional: = verdadeiro; MS.Free; fim; fim; fim; fim; fim; finalmente terminar; fim;

Aqui está uma captura de tela de nosso aplicativo de demonstração Visual Search Delphi

Você pode baixar o aplicativo de demonstração neste link: https://github.com/checkdigits/SearchByImage_example

perto

Reduza o tempo de desenvolvimento e chegue ao mercado mais rapidamente com RAD Studio, Delphi ou C ++ Builder.
Projeto. Código. Compilar. Implante.
Iniciar avaliação gratuita   Aprimore hoje

   Delphi Community Edition grátis   Edição gratuita da comunidade C ++ Builder