SearchByImage

O Microsoft Azure é uma plataforma em nuvem com mais de 200 produtos para encontrar uma solução para o seu problema. Entre eles, os Serviços Cognitivos são alguns produtos incríveis que fornecem muitas funcionalidades de IA. Por exemplo:

  • 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

Com esses recursos, qualquer desenvolvedor pode trazer IA para seus aplicativos sem um aprendizado profundo de aprendizado de máquina. Todos eles podem ser usados por meio da API REST, o que significa que você pode implementá-los em qualquer aplicativo moderno.

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