亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ndocr3.dpr

?? 一個不錯的QQ2009驗證碼自動識別程序源代碼
?? DPR
?? 第 1 頁 / 共 2 頁
字號:
    if x2 > -1 then break;
  end;
  y1 := -1;
  for n1:=0 to unitH-1 do
  begin
    for n2:=0 to unitW-1 do
    begin
      if unitAry[n1*unitW+n2] = 1 then
      begin
        y1 := n1;
        break;
      end;
    end;
    if y1 > -1 then break;
  end;
  y2 := -1;
  for n1:=unitH-1 downto 0 do
  begin
    for n2:=0 to unitW-1 do
    begin
      if unitAry[n1*unitW+n2] = 1 then
      begin
        y2 := n1;
        break;
      end;
    end;
    if y2 > -1 then break;
  end;
  Dec(x2,x1-1);
  Dec(y2,y1-1);
  w := 40;
  h := 40;
  SetLength(ary,w*h);
  for n1:=0 to w*h-1 do ary[n1] := 0;
  if x2 > 1 then xp := (w-1)/(x2-1) else xp := w-1;
  if y2 > 1 then yp := (h-1)/(y2-1) else yp := h-1;
  flag := (xp>1) or (yp>1);
  for n1:=0 to y2-1 do
  begin
    for n2:=0 to x2-1 do
    begin
      if unitAry[(n1+y1)*unitW+n2+x1] = 1 then
      begin
        x := Round(n2*xp);
        y := Round(n1*yp);
        ary[y*w+x] := 1;
        if flag then
        begin
          if n2<x2-1 then unifyDrawLine(n2+1,n1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
          if n1<y2-1 then
          begin
            unifyDrawLine(n2,n1+1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
            if unitAry[(n1+y1+1)*unitW+n2+x1] = 0 then
            begin
              if (n2<x2-1) and (unitAry[(n1+y1)*unitW+n2+x1+1]=0) then
                unifyDrawLine(n2+1,n1+1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
              if (n2>0) and (unitAry[(n1+y1)*unitW+n2+x1-1]=0) then
                unifyDrawLine(n2-1,n1+1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
            end else begin
              if (n2<x2-1) and (unitAry[(n1+y1)*unitW+n2+x1+1]=1) then
                unifyDrawArea(n2+1,n1+1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
              if (n2>0) and (unitAry[(n1+y1)*unitW+n2+x1-1]=1) then
                unifyDrawArea(n2-1,n1+1,x,y,x1,y1,w,unitW,xp,yp,ary,unitAry);
            end;
          end;
        end;
      end;
    end;
  end;
  unitW := w;
  unitH := h;
  unitAry := ary;
  result := true;
end;

function osLen(var ary1,ary2:TI25Array):Integer;stdcall;
var
  i,v: Integer;
begin
  v := 0;
  for i:=0 to 24 do Inc(v,(ary1[i]-ary2[i])*(ary1[i]-ary2[i]));
  result := v;
end;

function unitIdentity(libName:pchar;mRound,bone,limit,unitW,unitH:Integer;var unitAry:TBArray):string;stdcall;
var
  areaAry,ary2: TI25Array;
  i1,i2,n1,n2: Integer;
  c: string;
begin
  c := '?';
  if not unifyUnit(unitW,unitH,unitAry) then
  begin
    result := c;
    exit;
  end;

  for n1:=0 to 24 do areaAry[n1] := 0;
  for n1:=0 to unitH-1 do
  begin
    for n2:=0 to unitW-1 do
    begin
      if unitAry[n1*unitW+n2] = 1 then
      begin
        Inc(areaAry[(n1 shr 3)*5 + n2 shr 3]);
      end;
    end;
  end;

  n1 := limit + 1;
  n2 := -1;
  for i1:=0 to Length(libAry)-1 do
  begin
    if (StrComp(libName,'-')<>0) and (StrComp(libName,pchar(libAry[i1].LibName))<>0) then continue;
    i2:=0;
    while i2 < Length(libAry[i1].Ary) do
    begin
      for n1:=0 to 24 do ary2[n1] := libAry[i1].Ary[i2+1+n1];
      n1 := osLen(areaAry,ary2);
      if (n1<n2) or (n2=-1) then
      begin
        c := char(libAry[i1].Ary[i2]);
        if n1 <= limit then break;
        n2 := n1;
      end;
      Inc(i2,26);
    end;
    if (n1 <= limit) or (StrComp(libName,pchar(libAry[i1].LibName))=0) then break;
  end;
  result := c;
end;

function splitArea(spn,spx0,spy0,spuw,spuh,sppw,imgW:Integer;var imgAry:TBArray):TAAIArray;stdcall;
var
  ary: TAAIArray;
  n1,n2,n3,l: Integer;
begin
  SetLength(ary,spn);
  for n1:=0 to spn-1 do
  begin
    for n2:=0 to spuw-1 do
    begin
      for n3:=0 to spuh-1 do
      begin
        if imgAry[(n3+spy0)*imgW+n2+n1*(spuw+sppw)+spx0] = 1 then
        begin
          l := Length(ary[n1]);
          SetLength(ary[n1],l+1);
          ary[n1][l][0] := n2 + n1*spuw + spx0;
          ary[n1][l][1] := n3 + spy0;
        end;
      end;
    end;
  end;
  n2 := 0;
  for n1:=0 to spn-1 do
  begin
    if Length(ary[n1]) = 0 then
      Inc(n2)
    else if n2 > 0 then
      ary[n1-n2] := ary[n1];
  end;
  if n2 > 0 then SetLength(ary,Length(ary)-n2);
  result := ary;
end;

procedure cutArea(var imgW,imgH:Integer;spx0,spy0,spw2,sph2:Integer;var imgAry:TBArray);
var
  ary2: TBArray;
  i,n: Integer;
begin
  if spw2 <= 0 then spw2 := imgW + spw2;
  if sph2 <= 0 then sph2 := imgH + sph2;
  if spw2 > imgW then spw2 := imgW;
  if sph2 > imgH then sph2 := imgH;
  SetLength(ary2,spw2*sph2);
  for i:=0 to sph2-1 do
  begin
    for n:=0 to spw2-1 do
    begin
      ary2[i*spw2+n] := imgAry[(i+spy0)*imgW+n+spx0];
    end;
  end;
  imgAry := ary2;
  imgW := spw2;
  imgH := sph2;
end;

function identity(libName:pchar;mRound,bone,maxNoise,limit,spn,spx0,spy0,spuw,spuh,sppw,imgW,imgH:Integer;var imgAry:TBArray):pchar;stdcall;
var
  ary: TAAIArray;
  unitAry: TBArray;
  n,n1,x1,y1,x2,y2,unitW,unitH: Integer;
  rt: pchar;
begin
  if spx0 < 0 then spx0 := 0;
  if spy0 < 0 then spy0 := 0;
  if spn = 0 then begin
    if (spx0<>0) or (spy0<>0) or (spuw<>0) or (spuh<>0) then cutArea(imgW,imgH,spx0,spy0,spuw,spuh,imgAry);
    ary := clearNoise(maxNoise,imgW,imgH,true,imgAry);
  end else begin
    clearNoise(maxNoise,imgW,imgH,false,imgAry);
    n := (imgW-spx0-sppw) div (spuw+sppw);
    if (spn = -1) or (spn > n) then spn := n;
    ary := splitArea(spn,spx0,spy0,spuw,spuh,sppw,imgW,imgAry);
  end;
  GetMem(rt,Length(ary)+1);
  for n:=0 to Length(ary)-1 do
  begin
    x1 := ary[n][0][0];
    y1 := ary[n][0][1];
    x2 := x1;
    y2 := y1;
    for n1:=1 to Length(ary[n])-1 do
    begin
      if ary[n][n1][0] < x1 then x1 := ary[n][n1][0];
      if ary[n][n1][0] > x2 then x2 := ary[n][n1][0];
      if ary[n][n1][1] < y1 then y1 := ary[n][n1][1];
      if ary[n][n1][1] > y2 then y2 := ary[n][n1][1];
    end;
    unitW := x2 - x1 + 1;
    unitH := y2 - y1 + 1;
    SetLength(unitAry,unitW*unitH);
    for n1:=0 to Length(unitAry)-1 do unitAry[n1] := 0;
    for n1:=0 to Length(ary[n])-1 do
      unitAry[(ary[n][n1][1]-y1)*unitW+ary[n][n1][0]-x1] := 1;
    StrCopy(rt+n,pchar(unitIdentity(libName,mRound,bone,limit,unitW,unitH,unitAry)));
  end;
  result := rt;
end;

function getCode(var pImgAry:TBArray;imgW,imgH:Integer;para:pchar):pchar;stdcall;
var
  n,j: Integer;
  mRound,bone,lightKind,light1,light2,dots,limit,spn,spx0,spy0,spuw,spuh,sppw: Integer;
  maxNoise: Double;
  libName: string;
  sl: TStringList;
  imgAry:TBArray;
begin
  SetLength(imgAry,imgW*imgH);
  for n:=0 to imgW*imgH-1 do imgAry[n] := (pImgAry[3*n+2]*30 + pImgAry[3*n+1]*59 + pImgAry[3*n]*11) Div 100;

  sl := TStringList.Create();
  ExtractStrings([','],[],para,sl);
  if sl.Count > 0 then
    libName := LowerCase(sl[0])
  else
    libName := '-';
  if sl.Count > 1 then begin
    mRound := StrToInt(sl[1]);
    bone := StrToInt(sl[2]);
    lightKind := StrToInt(sl[3]);
    light1 := StrToInt(sl[4]);
    light2 := StrToInt(sl[5]);
    dots := StrToInt(sl[6]);
    maxNoise := StrToFloat(sl[7]);
    limit := StrToInt(sl[8]);
    spn := StrToInt(sl[9]);
    spx0 := StrToInt(sl[10]);
    spy0 := StrToInt(sl[11]);
    spuw := StrToInt(sl[12]);
    spuh := StrToInt(sl[13]);
    sppw := StrToInt(sl[14]);
  end else begin
    mRound := 0;
    bone := 0;
    lightKind := 0;
    light1 := 0;
    light2 := -1;
    dots := 1;
    maxNoise := 3;
    limit := 0;
    spn := 0;
    spx0 := 0;
    spy0 := 0;
    spuw := 0;
    spuh := 0;
    sppw := 0;
  end;
  sl.Free();
  if libName <> '-' then
  begin
    j := Length(libAry);
    for n:=0 to j-1 do
    begin
      if StrComp(pchar(libAry[n].LibName),pchar(libName)) = 0 then
      begin
        mRound := libAry[n].mRound;
        bone := libAry[n].bone;
        lightKind := libAry[n].lightKind;
        light1 := libAry[n].light1;
        light2 := libAry[n].light2;
        dots := libAry[n].dots;
        maxNoise := libAry[n].maxNoise;
        limit := libAry[n].limit;
        spn := libAry[n].spn;
        spx0 := libAry[n].spx0;
        spy0 := libAry[n].spy0;
        spuw := libAry[n].spuw;
        spuh := libAry[n].spuh;
        sppw := libAry[n].sppw;
        break;
      end;
    end;
  end;

  n := picTo01(lightKind,light1,light2,dots,imgW,imgH,imgAry);
  if maxNoise < 1 then maxNoise := maxNoise * n;
  result := identity(pchar(libName),mRound,bone,Round(maxNoise),limit,spn,spx0,spy0,spuw,spuh,sppw,imgW,imgH,imgAry);
end;

function loadLib_Str(var buf:TBArray;n,l:Integer):string;stdcall;
var
  i: Integer;
  s: string;
begin
  s := '';
  for i:=0 to l-1 do s := s + char(buf[n+i]);
  result := s;
end;

function loadLib_Int(var buf:Array of byte;var i:Integer):Integer;stdcall;
begin
  result := buf[i] + buf[i+1] shl 8 + buf[i+2] shl 16 + buf[i+3] shl 24;
  Inc(i,4);
end;

function loadLibFile(fn,libName:pchar):Boolean;stdcall;
var
  buf: TBArray;
  n,i,j,k: Integer;
  sLibName: string;
begin
  result := false;
  n := FileOpen(fn, fmOpenRead);
  if n = -1 then exit;
  i := FileSeek(n,0,2);
  FileSeek(n,0,0);
  SetLength(buf,i);
  FileRead(n, buf[0], i);
  FileClose(n);
  if (loadLib_Str(buf,0,8) <> 'NdOcrLib') then exit;
  if buf[8] <> 1 then exit;
  if StrComp(libName,'') = 0 then
    sLibName := loadLib_Str(buf,59,20)
  else
    sLibName := libName;
  sLibName := LowerCase(sLibName);
  j := Length(libAry);
  for n:=0 to j-1 do
    if StrComp(pchar(libAry[n].LibName),pchar(sLibName)) = 0 then exit;

  SetLength(libAry,j+1);
  with libAry[j] do
  begin
    mRound := buf[9];
    bone := buf[10];
    k := 11;
    lightKind := loadLib_Int(buf,k);
    light1 := loadLib_Int(buf,k);
    light2 := loadLib_Int(buf,k);
    dots := loadLib_Int(buf,k);
    maxNoise := loadLib_Int(buf,k) / 1000;
    limit := loadLib_Int(buf,k);
    spn := loadLib_Int(buf,k);
    spx0 := loadLib_Int(buf,k);
    spy0 := loadLib_Int(buf,k);
    spuw := loadLib_Int(buf,k);
    spuh := loadLib_Int(buf,k);
    sppw := loadLib_Int(buf,k);
  end;
  libAry[j].LibName := sLibName;
  libAry[j].Ary := copy(buf,279,i-279);
  result := true;
end;

function loadLib(fn,libName:pchar):Integer;stdcall;
var
  sr: TSearchRec;
  ret: Integer;
begin
  result := 0;
  if FileExists(fn) then begin
    if loadLibFile(fn,libName) then result := 1;
  end else begin
    ret := FindFirst(fn+'\*.lib',faAnyFile,sr);
    while Ret = 0 do
    begin
      if loadLibFile(pchar(fn+'\'+sr.Name),'') then Inc(result);
      ret := FindNext(sr);
    end;
    FindClose(sr.FindHandle);
  end;
end;

procedure freeLib();stdcall;
begin
  SetLength(libAry,0);
end;

exports
  loadLib,
  freeLib,
	getCode
  ;

begin

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区二区三区免费看| 在线观看日产精品| 亚洲国产一区在线观看| 日本一区二区三区高清不卡| 色综合一个色综合| 在线视频观看一区| 欧美午夜不卡视频| 7777女厕盗摄久久久| 在线成人高清不卡| 日韩午夜在线观看视频| 日韩一区二区电影在线| 国产欧美日韩综合精品一区二区| 精品区一区二区| 久久久久久一级片| 国产精品嫩草久久久久| 中文字幕一区二区三区蜜月| 亚洲欧美国产毛片在线| 亚洲综合精品久久| 免费人成在线不卡| 国产一本一道久久香蕉| 成人av免费在线播放| 99re成人在线| 欧美精品久久久久久久多人混战 | 欧美乱妇15p| 欧美一区二区精品在线| 国产无遮挡一区二区三区毛片日本| 国产视频视频一区| 依依成人精品视频| 美女视频黄 久久| 成人午夜视频网站| 欧美精品第1页| 中文文精品字幕一区二区| 亚洲日本va午夜在线影院| 爽好久久久欧美精品| 韩国成人在线视频| 欧美日韩免费观看一区二区三区 | 日韩美女视频在线| 国产精品免费视频网站| 免费人成精品欧美精品| www.99精品| 欧美tk—视频vk| 一区二区三区精密机械公司| 99久久精品免费| 夜夜嗨av一区二区三区中文字幕| 91麻豆精品视频| 欧美一区日韩一区| 久久精品欧美一区二区三区不卡 | 亚洲成a天堂v人片| 成人综合在线网站| 91精品国产高清一区二区三区| 久久午夜色播影院免费高清 | 欧美少妇bbb| 国产欧美一区二区三区沐欲| 午夜不卡在线视频| 91网站在线观看视频| 精品国产一区二区三区av性色| 亚洲柠檬福利资源导航| 国产精品亚洲专一区二区三区 | 欧美曰成人黄网| 欧美国产精品中文字幕| 日韩国产欧美在线观看| 91麻豆成人久久精品二区三区| 日韩欧美国产麻豆| 香蕉影视欧美成人| 欧美三级中文字幕在线观看| 国产精品日韩精品欧美在线| 国产在线精品一区二区| 欧美日韩成人在线| 亚洲3atv精品一区二区三区| 99国内精品久久| 国产精品网曝门| 成人永久免费视频| 国产精品―色哟哟| 9人人澡人人爽人人精品| 久久久久国色av免费看影院| 毛片av一区二区| 精品欧美黑人一区二区三区| 日韩av不卡在线观看| 91麻豆精品久久久久蜜臀 | 久久午夜国产精品| 国产乱码一区二区三区| 欧美成人欧美edvon| 久久草av在线| 久久久蜜桃精品| 国产精品123区| 国产精品情趣视频| 91免费在线视频观看| 又紧又大又爽精品一区二区| 在线这里只有精品| 亚洲成av人片在线| 日韩欧美一区二区在线视频| 日韩一区欧美二区| 亚洲精品一区二区精华| 成人天堂资源www在线| 中文字幕在线观看一区| 在线这里只有精品| 麻豆视频一区二区| 国产女主播一区| 91国产免费看| 丝袜国产日韩另类美女| 欧美成人在线直播| 99久久精品免费看| 蜜桃视频免费观看一区| 欧美国产日韩亚洲一区| 91同城在线观看| 日本不卡高清视频| 国产精品久久久一区麻豆最新章节| 色婷婷亚洲精品| 久久99日本精品| 最新成人av在线| 91精品国产91久久久久久最新毛片| 国产一区二区精品久久99| 亚洲欧洲日韩女同| 日韩美女视频在线| 91国产丝袜在线播放| 国产一区二区不卡| 亚洲国产精品综合小说图片区| 26uuuu精品一区二区| 日本电影亚洲天堂一区| 美女mm1313爽爽久久久蜜臀| 亚洲日本一区二区三区| 日韩三级.com| 在线精品观看国产| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 久久夜色精品国产噜噜av| 一本大道综合伊人精品热热| 精品一区二区在线免费观看| 一区二区三区在线播放| 中文字幕不卡在线播放| 欧美一区二区三区播放老司机| 不卡的av电影| 毛片基地黄久久久久久天堂| 亚洲一区二区三区四区在线观看 | 美女视频黄频大全不卡视频在线播放| 亚洲美女视频一区| 不卡免费追剧大全电视剧网站| 国产日韩高清在线| 欧美一区二区三区精品| aaa欧美大片| 成人av免费在线| 亚洲欧洲制服丝袜| 激情图片小说一区| 婷婷综合在线观看| 美脚の诱脚舐め脚责91| 国产精品888| 色综合久久88色综合天天免费| 欧美视频在线不卡| 久久亚洲影视婷婷| 亚洲三级小视频| 蜜桃av噜噜一区二区三区小说| 国产精品影视在线| 欧美性受xxxx黑人xyx| 精品国产乱码久久久久久影片| 国产精品乱码一区二区三区软件| 亚洲精品免费在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 一区二区三区四区在线播放| 丝瓜av网站精品一区二区| 国产精品77777| 欧美日韩精品欧美日韩精品一综合| 日韩一级欧美一级| 中文字幕在线观看不卡| 麻豆精品在线播放| av资源网一区| 日韩美一区二区三区| 亚洲美腿欧美偷拍| 国产一区二区三区四| 欧美亚一区二区| 国产精品美女久久久久久久久| 视频一区二区不卡| 91麻豆福利精品推荐| 久久久国际精品| 免费人成在线不卡| 欧美天天综合网| 国产精品久久精品日日| 美国十次了思思久久精品导航| 色婷婷久久99综合精品jk白丝| 久久日韩粉嫩一区二区三区| 亚洲高清免费视频| 色综合天天综合网天天狠天天 | 亚洲精品视频免费观看| 国产二区国产一区在线观看| 日韩欧美在线影院| 日韩精品1区2区3区| 91啪在线观看| 国产精品色哟哟网站| 国产成人在线免费观看| 欧美大胆人体bbbb| 日本不卡一区二区| 欧美日韩精品一区二区三区| 亚洲欧洲综合另类在线| 91免费看视频| 国产精品成人免费| 成人av在线电影| 国产精品卡一卡二卡三| 国产成人av一区| 日本一区免费视频| 成人精品视频一区| 中文字幕在线观看不卡视频| 波波电影院一区二区三区|