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

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

?? ndocr3.dpr

?? 一個不錯的QQ2009驗證碼自動識別程序源代碼
?? DPR
?? 第 1 頁 / 共 2 頁
字號:
library NdOcr3;

uses
  SysUtils,Windows,Classes,Math;

type
  TBArray  = Array of byte;
  TABArray = Array of TBArray;
  TAIArray = Array of Array[0..1] of Integer;
  TAAIArray = Array of TAIArray;
  TI25Array = Array[0..24] of byte;
  TLib = record
    LibName: string;
    mRound,bone,lightKind,light1,light2,dots,limit,spn,spx0,spy0,spuw,spuh,sppw: Integer;
    maxNoise: Double;
    Ary: TBArray;
  end;

var
  libAry: Array of TLib;



{$R *.res}

procedure setLightAry(i:Integer;var ary:TAIArray;var imgAry:TBArray);stdcall;
var
  n1: Integer;
begin
  for n1:=0 to Length(ary)-1 do
  begin
    if ary[n1][0] = imgAry[i] then
    begin
      Inc(ary[n1][1]);
      exit;
    end;
  end;
  n1 := Length(ary);
  SetLength(ary,n1+1);
  ary[n1][0] := imgAry[i];
  ary[n1][1] := 1;
end;

procedure sortLightAry(var ary:TAIArray;lightKind:byte);stdcall;
var
  n1,n2,n3,n4,l:Integer;
begin
  l := Length(ary) - 1;
  for n1:=0 to l-1 do
  begin
    if (lightKind = 2) or (lightKind = 4) then begin
      n3 := ary[n1][1];
      n4 := n1;
      for n2:=n1+1 to l do
      begin
        if n3 < ary[n2][1] then
        begin
          n3 := ary[n2][1];
          n4 := n2;
        end;
      end;
    end else begin
      n3 := ary[n1][0];
      n4 := n1;
      for n2:=n1+1 to l do
      begin
        if n3 < ary[n2][0] then
        begin
          n3 := ary[n2][0];
          n4 := n2;
        end;
      end;
    end;
    if n4 <> n1 then
    begin
      n2 := ary[n1][0];
      n3 := ary[n1][1];
      ary[n1][0] := ary[n4][0];
      ary[n1][1] := ary[n4][1];
      ary[n4][0] := n2;
      ary[n4][1] := n3;
    end;
  end;
end;

function indexOfLightAry(c:Integer;var ary:TAIArray):Integer;stdcall;
var
  n:Integer;
begin
  for n:=0 to Length(ary)-1 do
  begin
    if ary[n][0] = c then
    begin
      result := n;
      exit;
    end;
  end;
  result := -1;
end;

function otsuIndex(var ary:TAIArray):Integer;stdcall;
var
  sum,csum,fmax,m1,m2,sb: Double;
  n,k,n1,n2: Integer;
begin
  result := 1;
  if Length(ary) < 3 then exit;
  sum := 0;
  csum := 0;
  n := 0;
  for k:=0 to Length(ary)-1 do
  begin
    sum := sum + ary[k][0]*ary[k][1];
    n := n + ary[k][1];
  end;
  fmax := -1;
  n1 := 0;
  for k:=0 to Length(ary)-1 do
  begin
    n1 := n1 + ary[k][1];
    n2 := n - n1;
    if n2 = 0 then break;
    csum := csum + ary[k][0]*ary[k][1];
    m1 := csum / n1;
    m2 := (sum-csum) / n2;
    sb := n1*n2*(m1-m2)*(m1-m2);
    if sb > fmax then
    begin
      fmax := sb;
      result := k + 1;
    end;
  end;
end;

function picTo01(lightKind:byte;light1,light2,dots,imgW,imgH:Integer;var imgAry:TBArray):Integer;stdcall;
var
  ary:TAIArray;
  ary2:TBArray;
  i,l,n1,count:Integer;
begin
  Randomize();
	i := 0;
	l := imgW*imgH - 1;
	while i <= l do
	begin
	  setLightAry(i,ary,imgAry);
	  if dots > 2 then
	  begin
	    Inc(i,dots+Random(5)-2);
	  end else begin
	    Inc(i,dots);
	  end;
	end;
	sortLightAry(ary,lightKind);
  if lightKind = 0 then light1 := otsuIndex(ary);
  if lightKind < 3 then begin
    if light1 = -1 then light1 := Length(ary);
    if light2 = -1 then light2 := Length(ary);
  end else begin
    if light1 = -1 then light1 := imgW * imgH;
    if light2 = -1 then light2 := imgW * imgH;
  end;

  count := 0;
  SetLength(ary2,imgW*imgH);
  l := imgW*imgH-1;
  for i:=0 to l do
  begin
    n1 := imgAry[i];
    if lightKind < 3 then n1 := indexOfLightAry(n1,ary);
    if (n1>=light1) and (n1<=light2) then
    begin
      ary2[i] := 1;
      Inc(count);
    end else begin
      ary2[i] := 0;
    end;
  end;

  imgAry := ary2;
  result := count;
end;

procedure to8(x,y,imgW,imgH:Integer;var ary:TAIArray;var imgAry:TBArray);stdcall;
var l:Integer;
begin
  if (x>=0) and (x<imgW) and (y>=0) and (y<imgH) and (imgAry[y*imgW+x]=1) then
  begin
    imgAry[y*imgW+x] := 2;
    l := Length(ary);
    SetLength(ary,l+1);
    ary[l][0] := x;
    ary[l][1] := y;
  end;
end;

function clearNoise(maxNoise,imgW,imgH:Integer;rtnFlag:Boolean;var imgAry:TBArray):TAAIArray;stdcall;
var
  n1,n2,n3,n4,x,y,top,borderT,borderX,borderB: Integer;
  ary,ary2: TAIArray;
  rtnAry: TAAIArray;
begin
  if rtnFlag then SetLength(rtnAry,0);
  for n2:=0 to imgW-1 do
  begin
    for n1:=0 to imgH-1 do
    begin
      if imgAry[n1*imgW+n2] = 1 then
      begin
        SetLength(ary,1);
        ary[0][0] := n2;
        ary[0][1] := n1;
        top := n1;
        borderT := 0;
        borderX := 0;
        borderB := 0;
        imgAry[n1*imgW+n2] := 2;
        n3 := 0;
        SetLength(ary2,1);
        While Length(ary2) > 0 do
        begin
          SetLength(ary2,0);
          for n4:=n3 to Length(ary)-1 do
          begin
            x := ary[n4][0];
            y := ary[n4][1];
            if y < top then top := y;
            if (x=0) or (x=48) then Inc(borderX);
            if (y=0) then Inc(borderT);
            if (y=19) then Inc(borderB);
            to8(x-1,y-1,imgW,imgH,ary2,imgAry);
            to8(x,y-1,imgW,imgH,ary2,imgAry);
            to8(x+1,y-1,imgW,imgH,ary2,imgAry);
            to8(x-1,y,imgW,imgH,ary2,imgAry);
            to8(x+1,y,imgW,imgH,ary2,imgAry);
            to8(x-1,y+1,imgW,imgH,ary2,imgAry);
            to8(x,y+1,imgW,imgH,ary2,imgAry);
            to8(x+1,y+1,imgW,imgH,ary2,imgAry);
          end;
          n3 := Length(ary);
          SetLength(ary,n3+Length(ary2));
          for n4:=0 to Length(ary2)-1 do
          begin
            ary[n3+n4] := ary2[n4];
          end;
        end;
        if (Length(ary)>maxNoise) and (top<10) and (borderX<8) and (borderT<5) and (borderB<5) then
        begin
          n4 := 3;
          if rtnFlag then
          begin
            n3 := Length(rtnAry);
            SetLength(rtnAry,n3+1);
            rtnAry[n3] := ary;
          end;
        end else
          n4 := 0;
        for n3:=0 to Length(ary)-1 do
          imgAry[ary[n3][0]+ary[n3][1]*imgW] := n4;
      end;
    end;
  end;
  n2 := imgW*imgH-1;
  for n1:=0 to n2 do
    if imgAry[n1] = 3 then imgAry[n1] := 1;
  result := rtnAry;
end;

procedure fixUnit(unitW,unitH:Integer;var unitAry:TBArray);stdcall;
var
  ary: Array of Integer;
  n1,n2,n3: Integer;
begin
  SetLength(ary,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
        n3 := 0;
        if n1 > 0 then
        begin
          Inc(n3,unitAry[(n1-1)*unitW+n2]);
          if n2 > 0 then Inc(n3,unitAry[(n1-1)*unitW+n2-1]);
          if n2 < unitW-1 then Inc(n3,unitAry[(n1-1)*unitW+n2+1]);
        end;
        if n1 < unitH-1 then
        begin
          Inc(n3,unitAry[(n1+1)*unitW+n2]);
          if n2 > 0 then Inc(n3,unitAry[(n1+1)*unitW+n2-1]);
          if n2 < unitW-1 then Inc(n3,unitAry[(n1+1)*unitW+n2+1]);
        end;
        if n2 > 0 then Inc(n3,unitAry[n1*unitW+n2-1]);
        if n2 < unitW-1 then Inc(n3,unitAry[n1*unitW+n2+1]);
        if n3 = 1 then
        begin
          n3 := Length(ary);
          SetLength(ary,n3+1);
          ary[n3] := n1*unitW+n2;
        end;
      end else begin
        n3 := 0;
        if n1 > 0 then Inc(n3,unitAry[(n1-1)*unitW+n2]);
        if n1 < unitH-1 then Inc(n3,unitAry[(n1+1)*unitW+n2]);
        if n2 > 0 then Inc(n3,unitAry[n1*unitW+n2-1]);
        if n2 < unitW-1 then Inc(n3,unitAry[n1*unitW+n2+1]);
        if n3 = 4 then unitAry[n1*unitW+n2] := 1;
      end;
    end;
  end;
  for n1:=0 to Length(ary)-1 do unitAry[ary[n1]] := 0;

	SetLength(ary,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
        n3 := 0;
        if n1 > 0 then
        begin
          if n2 > 0 then Inc(n3,unitAry[(n1-1)*unitW+n2-1]);
          Inc(n3,unitAry[(n1-1)*unitW+n2] shl 1);
          if n2 < unitW-1 then Inc(n3,unitAry[(n1-1)*unitW+n2+1] shl 2);
        end;
        if n2 > 0 then Inc(n3,unitAry[n1*unitW+n2-1] shl 3);
        if n2 < unitW-1 then Inc(n3,unitAry[n1*unitW+n2+1] shl 4);
        if n1 < unitH-1 then
        begin
          if n2 > 0 then Inc(n3,unitAry[(n1+1)*unitW+n2-1] shl 5);
          Inc(n3,unitAry[(n1+1)*unitW+n2] shl 6);
          if n2 < unitW-1 then Inc(n3,unitAry[(n1+1)*unitW+n2+1] shl 7);
        end;
        if (n3=3) or (n3=6) or (n3=20) or (n3=144) or (n3=192) or (n3=96) or (n3=40) or (n3=9)
          or (n3=7) or (n3=148) or (n3=41) or (n3=224) then
        begin
          n3 := Length(ary);
          SetLength(ary,n3+1);
          ary[n3] := n1*unitW+n2;
        end;
      end;
    end;
  end;
  for n1:=0 to Length(ary)-1 do unitAry[ary[n1]] := 0;
end;

procedure unifyDrawLine(toX,toY,x,y,x1,y1,w,unitW:Integer;xp,yp:Double;var ary,unitAry:TBArray);stdcall;
var
  dx,dy,dt,n: Integer;
begin
  if unitAry[(toY+y1)*unitW+toX+x1] = 0 then exit;
  toX := Round(toX*xp);
  toY := Round(toY*yp);
  dx := toX - x;
  dy := toY - y;
  if Abs(dx) > Abs(dy) then dt := Abs(dx) else dt := Abs(dy);
  for n:=1 to dt-1 do ary[(y+Round(n*dy/dt))*w+x+Round(n*dx/dt)] := 1;
end;

procedure unifyDrawArea(toX,toY,x,y,x1,y1,w,unitW:Integer;xp,yp:Double;var ary,unitAry:TBArray);stdcall;
var
  dx,dy,n1,n2: Integer;
begin
  if unitAry[(toY+y1)*unitW+toX+x1] = 0 then exit;
  toX := Round(toX*xp);
  toY := Round(toY*yp);
  dx := toX - x;
  dy := toY - y;
  for n1:=1 to Abs(dy)-1 do
    for n2:=1 to Abs(dx)-1 do
      ary[(y+n1*Sign(dy))*w+x+n2*Sign(dx)] := 1;
end;

function unifyUnit(var unitW,unitH:Integer;var unitAry:TBArray):Boolean;stdcall;
var
  ary: TBArray;
  n1,n2,x,y,x1,x2,y1,y2,w,h: Integer;
  xp,yp: Double;
  flag: Boolean;
begin
  x1 := -1;
  for n1:=0 to unitW-1 do
  begin
    for n2:=0 to unitH-1 do
    begin
      if unitAry[n2*unitW+n1] = 1 then
       begin
        x1 := n1;
        break;
      end;
    end;
    if x1 > -1 then break;
  end;
  if x1 = -1 then
  begin
    result := false;
    exit;
  end;
  x2 := -1;
  for n1:=unitW-1 downto 0 do
  begin
    for n2:=0 to unitH-1 do
    begin
      if unitAry[n2*unitW+n1] = 1 then
      begin
        x2 := n1;
        break;
      end;
    end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区三区四区| 国产日韩欧美精品电影三级在线| 欧美挠脚心视频网站| 久久在线观看免费| 五月激情综合色| 在线观看一区二区精品视频| 青青草91视频| 国产欧美精品一区| 91精品国产色综合久久| eeuss鲁一区二区三区| 国产人妖乱国产精品人妖| 日韩免费电影一区| 亚洲免费av高清| jizzjizzjizz欧美| 国产亚洲综合性久久久影院| 亚洲成年人网站在线观看| 国产成人免费视频| 久久久欧美精品sm网站| 久久99国产精品成人| 精品国精品国产| 国产在线一区二区| 久久久久久久久久久黄色| 亚洲综合在线五月| 欧美一区二区在线播放| 美国十次综合导航| 久久免费的精品国产v∧| 国产尤物一区二区| 日韩美女久久久| 欧美精品久久一区二区三区| 亚洲国产毛片aaaaa无费看 | 久久日韩粉嫩一区二区三区| 美腿丝袜亚洲色图| 中文字幕精品一区| 日本韩国精品一区二区在线观看| 伊人一区二区三区| 91精品国产综合久久久久久久久久 | 国产激情视频一区二区三区欧美 | 亚洲品质自拍视频| 精品视频1区2区| 粉嫩高潮美女一区二区三区| 久久久91精品国产一区二区精品 | 91麻豆成人久久精品二区三区| 成人免费小视频| 欧美综合在线视频| 国产一区欧美日韩| 亚洲高清视频在线| 欧美极品aⅴ影院| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 91丝袜国产在线播放| 日本成人在线电影网| 最新高清无码专区| 欧美一区二视频| 91无套直看片红桃| 国产老妇另类xxxxx| 亚洲一区二区精品久久av| 欧美一区二区三区四区在线观看 | 日韩一区在线免费观看| 欧美激情一区二区三区不卡 | 日韩有码一区二区三区| 亚洲第一福利一区| 九九精品视频在线看| 欧美精品一区二区高清在线观看| 97精品超碰一区二区三区| 久久国产乱子精品免费女| 美女网站视频久久| 日韩**一区毛片| 狠狠色狠狠色综合系列| 久久精品国产亚洲5555| 久久精品久久久精品美女| 免费看欧美美女黄的网站| 奇米精品一区二区三区四区| 视频一区欧美精品| 国内精品在线播放| 成人小视频在线| 99精品欧美一区二区三区小说| 久久成人久久爱| 久久99热国产| 亚洲va欧美va人人爽午夜| 一区二区三区精品| 蜜桃av一区二区| 国产ts人妖一区二区| voyeur盗摄精品| 欧美色图免费看| 日韩欧美国产一区在线观看| 久久只精品国产| 亚洲视频一区在线| 紧缚奴在线一区二区三区| a级高清视频欧美日韩| 日韩三级中文字幕| 中文字幕日韩欧美一区二区三区| 亚洲一区中文在线| 日日欢夜夜爽一区| 成人av网站在线观看免费| 欧美三级电影精品| 国产精品女同互慰在线看| 夜色激情一区二区| www.欧美日韩| 欧美一区二区三区在| 一区二区三区在线观看动漫| 国产精品99久久久久久似苏梦涵| 欧美日韩dvd在线观看| 欧美mv和日韩mv国产网站| 亚洲一区二区在线视频| 成人精品gif动图一区| 精品剧情v国产在线观看在线| 一区二区三区中文字幕精品精品| 国产成人精品三级| 久久久亚洲精品一区二区三区| 亚洲日本在线天堂| 成人免费高清在线| 日本一区二区三区四区在线视频| 免费在线观看日韩欧美| 欧美性一区二区| 亚洲综合在线观看视频| 色老头久久综合| 成人免费在线视频| 日本久久电影网| 一区二区免费在线播放| 在线视频一区二区三| 亚洲精品乱码久久久久久| 欧美一级欧美三级在线观看| 国产日韩欧美精品电影三级在线| 最新热久久免费视频| 99国产一区二区三精品乱码| 中文字幕精品三区| 欧美性猛片aaaaaaa做受| 亚洲欧美另类久久久精品| 欧美日韩一区三区四区| 狠狠色丁香九九婷婷综合五月| 精品动漫一区二区三区在线观看| 国产在线不卡一卡二卡三卡四卡| 欧美国产丝袜视频| 欧美综合一区二区| 亚洲一区二区三区四区在线免费观看 | 国产欧美视频在线观看| 99精品视频免费在线观看| 亚洲精品高清在线观看| 欧美日本一区二区在线观看| 久久99久久久欧美国产| 亚洲图片另类小说| 欧美xxxxx牲另类人与| 91在线国产福利| 韩国女主播成人在线| 亚洲一二三四在线| 综合久久给合久久狠狠狠97色| 欧美日韩视频专区在线播放| 国产成人av影院| 五月天一区二区三区| 国产欧美一区二区精品忘忧草| 懂色av一区二区夜夜嗨| 日日噜噜夜夜狠狠视频欧美人| www亚洲一区| 亚洲精品一区二区三区精华液| 欧美精品1区2区3区| 欧美日韩一区中文字幕| 欧美日韩一区三区四区| 在线免费观看一区| 一本久久综合亚洲鲁鲁五月天| 成人黄色大片在线观看| 日韩和欧美一区二区| 日韩一区中文字幕| 欧美日韩国产在线播放网站| 99精品欧美一区| 国产二区国产一区在线观看| 国产一区二区三区四区五区入口| 美女脱光内衣内裤视频久久网站 | 另类小说一区二区三区| 理论电影国产精品| 韩国三级在线一区| 国产综合成人久久大片91| 狠狠狠色丁香婷婷综合久久五月| 另类欧美日韩国产在线| 亚欧色一区w666天堂| 美日韩一区二区| 国产乱一区二区| 色综合久久九月婷婷色综合| 色婷婷亚洲一区二区三区| 欧美在线高清视频| 日韩精品专区在线影院观看| 精品国产1区2区3区| 亚洲美女免费视频| 狠狠色2019综合网| 91国内精品野花午夜精品 | 国产午夜精品一区二区三区嫩草 | 成人av网站免费观看| 欧美网站大全在线观看| 久久精品一区四区| 国产麻豆91精品| 免费成人在线观看| 成人av网站在线观看免费| 欧美日韩一区二区三区在线看| 国产经典欧美精品| 欧美性猛交xxxxxx富婆| 一区在线播放视频| caoporm超碰国产精品| 久久精品综合网| 成人性生交大片免费看视频在线 | 成人免费观看视频| 中文字幕va一区二区三区| 国产精品夜夜嗨|