网络识图,delphi识别,百度图片

2025-10-19 14:50:43

1、放置2个button,2个edit,2个image

网络识图,delphi识别,百度图片

2、button1的过程

var

  ms:TMemoryStream;

  jpg:TJPEGImage;

begin

  try

  jpg:=TJPEGImage.Create;

  ms:=TMemoryStream.Create;

  idhtp1.Get(edt1.Text,ms);

  ms.Position:=0;

  jpg.LoadFromStream(ms);

  img1.Picture.Assign(jpg);

  jpg.SaveToFile('c:\123.jpg');

  except

   ms.Free;

  end;

3、button2的过程,即是识别图片过程,这个过程完全模拟百度上传图片识别

var

   i:Integer;

   pd:tstringlist;

   s,sName,sUrljpg:string;

   ms,ms1:TStringStream;

   jpg:TJPEGImage;

 //  Cookies : TIdCookieManager;

   mstrCookie: string;

begin

  try

   jpg:=TJPEGImage.Create;

   ms:=TStringStream.Create('');

   ms1:=TStringStream.Create('');

   img1.Picture.Bitmap.SaveToStream(ms);

   idhtp1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko';

   idhtp1.Request.AcceptLanguage:='zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.7,en;q=0.5,es-DO;q=0.3,es;q=0.2';

  begin

   s:=(idhtp1.Post('http://image.baidu.com/pictureup/uploadshitu?'

   +'fr=flash&fm=index&pos=upload',mps));

   s:=(idhtp1.Get('http://image.baidu.com'+s));

   sName:=GetStringBetween(s,'guessWord','.split') ;

   sName:=Trim(StringReplace (sName,'''',

'', [rfReplaceAll]));

   sName:=Trim(StringReplace (sName,':',

'', [rfReplaceAll]));

   sUrljpg:=GetStringBetween(s,'<img class="guess-newbaike-left-img" src="','<div class="guess-newbaike-left-similarity">') ;

   sUrljpg:=Trim(StringReplace (sUrljpg,'amp;',

'', [rfReplaceAll]));

   sUrljpg:=Trim(StringReplace (sUrljpg,'</div>',

'', [rfReplaceAll]));

   sUrljpg:=Trim(StringReplace (sUrljpg,'">',

'', [rfReplaceAll]));

 //  sUrljpg:=TIdURI.URLDecode(sUrljpg);

   idhtp1.Request.UserAgent := '';

   mstrCookie := 'aaa=5555&bb=12345';

   idhtp1.Request.AcceptEncoding := '';

   if mstrCookie <> '' then

   begin

    idhtp1.Request.CustomHeaders.Add('Cookie: ' + mstrCookie);

   end;

   idhtp1.Request.Referer:='https://www.baidu.com';

   idhtp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko';

   idhtp1.Get(sUrljpg,ms1);

   ms1.Position:=0;

   jpg.LoadFromStream(ms1);

   img2.Picture.Assign(jpg);

   edt2.Text:='我猜您的图片是:'+Utf8ToAnsi(sName);

  // ShowMessage(sUrljpg);

   end;

  except

    MPS.Free;

    ms.Free;

    ms1.Free;

  end;

4、必要的过程,取字符串与字符串中间的字符

function GetStringBetween(const FullStr, StrLeft, StrRight: String): string;

var

idx_Start,idx_End,iStrCnt: Integer;

begin

Result:='';

idx_Start := Pos(StrLeft,FullStr)+Length(StrLeft);

idx_End:= Pos(StrRight,FullStr);

iStrCnt:= idx_End - idx_Start;

Result:=Copy(FullStr,idx_Start,iStrCnt);

end;

网络识图,delphi识别,百度图片

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢