API License Plate Recognition --Restful embodiment Baidu

Step 1: get Token Address

 

 

 

 1 function TfrmMain.GetToken(TokenUrl, lbledtAPIKEY, lbledtSecretKey
 2   : string): string;
 3 begin
 4   with RESTClient1 do
 5   begin
 6     BaseURL := TokenUrl;
 7   end;
 8   with RESTRequest1 do
 9   begin
10     Method := rmPOST;
11     AcceptCharSet := 'utf-8';
12     Params.Clear;
13     AddParameter('grant_type', 'client_credentials');
14     AddParameter('client_id', lbledtAPIKEY);
15     // API ID   key
16     AddParameter('client_secret', lbledtSecretKey);
17     // API secret  key
18     Execute;
19     Result := RESTResponse1.Content;
20   end;
21 end;
22 
23 function TfrmMain.GetAccessToken(jsonstr: string): string; // 取jsonstring 值
24 var
25   jo: TjsonObject;
26   jv: TjsonValue;
27 begin
28   jo := nil;
29   jo := TjsonObject.Create;
30   jo := TjsonObject.parsejsonvalue(Tencoding.utf8.getbytes(jsonstr), 0)
31     as TjsonObject;
32   jv := jo.Get('access_token').JsonValue;
33   Result := jv.Value;
34 end;
35 
36 
37 procedure TfrmMain.Button1Click(Sender: TObject);
38 begin
39   lbledtToken.Text := GetAccessToken(GetToken(lbledtTokenUrl.Text,
40     lbledtAPIKEY.Text, lbledtSecretKey.Text));
41 end;

 

Step Two: identify the license plate
function TfrmMain.GetCarNumJson(AccessToken, CarNumAPI: string): string;
var
  strtemp: string;
  temp: TjsonObject;
  strm: TMemoryStream;
  ss: TStringStream;
  s: string;
begin
  if frmMain.Image1.Picture.Graphic <> nil then
  begin
    strm := TMemoryStream.Create;
    frmMain.Image1.Picture.SaveToStream(strm);
    ss := TStringStream.Create('');
    strm.Position := 0;
    EncodeStream(strm, ss); // 将内存流编码为base64字符流
    s := ss.DataString;
    strm.Free;
    ss.Free;
  end;
  RESTClient1.BaseURL := CarNumAPI;
  RESTRequest1.Params.Clear;
  RESTRequest1.AddParameter('access_token', AccessToken);
  RESTRequest1.AddParameter('image', s);
  RESTRequest1.Execute;
  Result := RESTResponse1.Content;
end;

function TfrmMain.GetCarNum(CarNumJSONStr: String): string;
var
  Jo: TjsonObject; 
  Jo2: TjsonObject; 
  JV: TjsonValue; 
  jsonstr: String ; // to convert json string 
  jsonstr2: String ; // to convert json string 
the begin 
  // first remove the nested string 
  jo: = TjsonObject.parsejsonvalue (CarNumJSONStr) AS TjsonObject; 
  jsonstr: = jo.GetValue ( ' words_result ' ) .ToString;
   // then the value of the string 
  Jo2: = TjsonObject.parsejsonvalue (jsonstr) AS TjsonObject; 
  jsonstr2: = jo.GetValue ( ' words_result ').ToString;
  try
    jv := jo2.Get('number').JsonValue;
    Result := jv.Value;
  finally
    jo.Free;
  end;
end;

procedure TfrmMain.Button2Click(Sender: TObject);
begin
  lbledtCarNum.Text := GetCarNum(GetCarNumJson(lbledtToken.Text,
    lbledtAPIURL.Text));
end;

 

 

Finally: The results map

 

Guess you like

Origin www.cnblogs.com/redhat588/p/11563275.html