一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

delphi WebBrowser控件上網(wǎng)頁(yè)驗(yàn)證碼圖片識(shí)別教程(一)

 delphi_筆記 2019-01-04
步驟一:獲取網(wǎng)頁(yè)中驗(yàn)證碼圖片的url地址
在delphi中加入一個(gè)BitBtn和一個(gè)memo以及WebBrowser控件實(shí)現(xiàn)網(wǎng)頁(yè)中驗(yàn)證碼圖片的url地址的獲取
程序如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I:Integer;
begin
  for I:=0 to WebBrowser1.OleObject.document.images.length-1 do
    Memo1.Lines.Add(WebBrowser1.OleObject.document.images.item(i).href);
end;

 步驟二:下載網(wǎng)頁(yè)中驗(yàn)證碼圖片到image中 
在delphi中加入一個(gè)BitBtn和一個(gè)image以及WebBrowser控件,image用來(lái)顯示下載的圖片
代碼:
procedure TForm1.BitBtn5Click(Sender: TObject);
var
  i:Integer;
  rang:IHTMLControlRange;
  s:string;
begin
try
  s := (IHTMLDocument2(WebBrowser.Document).images.item('img_validatecode',EmptyParam) as IHTMLElement).getAttribute('src',0);
  rang:=((IHTMLDocument2(WebBrowser.Document).body as HTMLBody).createControlRange)as IHTMLControlRange;
  rang.add(IHTMLDocument2(WebBrowser.Document).images.item('img_validatecode',EmptyParam)as IHTMLControlElement);
  rang.execCommand('Copy',False,0);
  Image1.Picture.Assign(clipboard);//若為加入Clipbrd單元,編譯時(shí)會(huì)提示clipboard為定義
except
end;
end; 
注意:
1、在程序的uses中必須先加入ActiveX,Clipbrd單元,其中Clipbrd不加入會(huì)造成 clipboard未定義
2、img_validatecode 為網(wǎng)頁(yè)驗(yàn)證碼圖片的id號(hào),
3、上面代碼為delphi WebBrowser中的通用代碼,使用時(shí)只需修改id號(hào)和uses中 添加單元即可使用

 步驟三:image圖片的灰度處理 
 首先我們需要知道圖片的灰度處理是將一些彩色的驗(yàn)證碼圖片變成灰色圖片方便圖片的后續(xù)處理,這里有三種方法對(duì)圖片進(jìn)行灰色處理。
 方法一:求出RGB這三個(gè)像素點(diǎn)的平均值,然后把平均值分給三個(gè)像素點(diǎn);
 方法二:求每個(gè)像素點(diǎn)RGB三個(gè)分量的最大值,然后把最大值分給三個(gè)像素點(diǎn);
 方法三:根據(jù)YUV的顏色空間,求出Y的值;
 方法一:
 代碼: 
 procedure TForm1.BitBtn4Click(Sender: TObject);
var
  p: pbyteArray;  //位指針
  x,y: integer;//x寬,y高
  Bmp: TBitmap;//位圖組件(TBitMap)
  Gray: integer;//灰度值
begin
  Bmp := TBitmap.Create;//建立一個(gè)TBitmap
  Bmp.Assign(Form1.Image1.Picture.Bitmap);//將image圖片轉(zhuǎn)為位圖模式
  Bmp.PixelFormat := pf24bit; //設(shè)為24位之彩色位圖,PixelFormat 為位圖的內(nèi)存格式和顏色深度,總共9個(gè)值
  for y := 0 to Bmp.Height-1 do
  begin
    p :=Bmp.ScanLine[y];//ScanLine方法用于獲取像素顏色值
    for x:=0 to Bmp.Width-1 do
    begin
      Gray:=(p[3*x+2]+p[3*x+1]+p[3*x]) div 3;//3處像素點(diǎn)的平均值
      p[3*x+2]:=byte(Gray);
      p[3*x+1]:=byte(Gray);
      p[3*x]:=byte(Gray);
    end;
  end;
  image4.Picture.Bitmap := Bmp;
  Bmp.Free;//釋放TBitmap
end;
原圖:    
處理后: 

方法二:
代碼:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
  p: pbyteArray;  //位指針
  x,y: integer;//x寬,y高
  Bmp: TBitmap;//位圖組件(TBitMap)
  Gray: integer;//灰度值
begin
  Bmp := TBitmap.Create;//建立一個(gè)TBitmap
  Bmp.Assign(Form1.Image1.Picture.Bitmap);//將image圖片轉(zhuǎn)為位圖模式
  Bmp.PixelFormat := pf24bit; //設(shè)為24位之彩色位圖,PixelFormat 為位圖的內(nèi)存格式和顏色深度,總共9個(gè)值
  for y := 0 to Bmp.Height-1 do
  begin
    p :=Bmp.ScanLine[y];//ScanLine方法用于獲取像素顏色值
    for x:=0 to Bmp.Width-1 do
    begin
      Gray:=Max(p[3*x+2],p[3*x+1]);  //使用max函數(shù)旭定義Math單元
      Gray:=Max(Gray,p[3*x]);
      p[3*x+2]:=byte(Gray);
      p[3*x+1]:=byte(Gray);
      p[3*x]:=byte(Gray);
    end;
  end;
  image4.Picture.Bitmap := Bmp;
  Bmp.Free;//釋放TBitmap
end;
原圖:      
處理后: 
 
 方法三:運(yùn)用公式Y(jié)=0.299R+0.857G+0.113B
procedure TForm1.BitBtn4Click(Sender: TObject);
var
  p: pbyteArray;  //位指針
  x,y: integer;//x寬,y高
  Bmp: TBitmap;//位圖組件(TBitMap)
  Gray: integer;//灰度值
begin
  Bmp := TBitmap.Create;//建立一個(gè)TBitmap
  Bmp.Assign(Form1.Image1.Picture.Bitmap);//將image圖片轉(zhuǎn)為位圖模式
  Bmp.PixelFormat := pf24bit; //設(shè)為24位之彩色位圖,PixelFormat 為位圖的內(nèi)存格式和顏色深度,總共9個(gè)值
  for y := 0 to Bmp.Height-1 do
  begin
    p :=Bmp.ScanLine[y];//ScanLine方法用于獲取像素顏色值
    for x:=0 to Bmp.Width-1 do
    begin
      Gray:=round(p[3*x+2]*0.3+p[3*x+1]*0.59+p[3*x]*0.11);//公式Y(jié)=0.299R+0.857G+0.113B
      p[3*x+2]:=byte(Gray);
      p[3*x+1]:=byte(Gray);
      p[3*x]:=byte(Gray);
    end;
  end;
  image4.Picture.Bitmap := Bmp;
  Bmp.Free;//釋放TBitmap
end;
原圖:   
處理后:  

步驟四:image圖片的二值化
 
      在對(duì)圖像二值化之前需要對(duì)圖像進(jìn)行灰度處理,二值化原理:通過(guò)設(shè)定閾值(threshold),把灰度圖像變成僅用0或1來(lái)表示圖像目標(biāo)和背景,其中圖像目標(biāo)大多為數(shù)字,字母,設(shè)為1,;背景設(shè)為0。在位圖中0對(duì)應(yīng)0,1對(duì)應(yīng)255,二值化方法很多,但是重點(diǎn)是在于對(duì)閾值的選擇。
     閾值的選擇主要分為兩類:全局閾值和局部閾值。
     全局閾值是對(duì)整個(gè)圖像采用一個(gè)閾值進(jìn)行劃分,例如固定閾值法二值化、判斷分析化二值化等;
     局部閾值是將圖像分為幾塊,每個(gè)子塊采用不同的閾值;(具體局部閾值法可以自行百度,這里不必過(guò)多解釋)
代碼:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
  p: pbyteArray;  //位指針
  x,y: integer;//x寬,y高
  Bmp: TBitmap;//位圖組件(TBitMap)
  Gray: integer;//灰度值
begin
  Bmp := TBitmap.Create;//建立一個(gè)TBitmap
  Bmp.Assign(Form1.Image1.Picture.Bitmap);//將image圖片轉(zhuǎn)為位圖模式
  Bmp.PixelFormat := pf24bit; //設(shè)為24位之彩色位圖,PixelFormat 為位圖的內(nèi)存格式和顏色深度,總共9個(gè)值
  for y := 0 to Bmp.Height-1 do
  begin
    p :=Bmp.ScanLine[y];//ScanLine方法用于獲取像素顏色值
    for x:=0 to Bmp.Width-1 do
    begin
      Gray:=round(p[3*x+2]*0.3+p[3*x+1]*0.59+p[3*x]*0.11);//公式Y(jié)=0.299R+0.857G+0.113B
      //圖像二值化
      if Gray > 120 then//閾值為120
      begin
        p[3*x+2]:=255;
        p[3*x+1]:=255;
        p[3*x]:=255;
      end
      else
      begin
        p[3*x+2]:=0;
        p[3*x+1]:=0;
        p[3*x]:=0;
      end; 
//分割線------------------------------------- 
    end;
  end;
  image4.Picture.Bitmap := Bmp;
  Bmp.Free;//釋放TBitmap
end;
原圖:   
處理后:
從效果圖可以看出,圖像二值化就是設(shè)定一個(gè)閾值,然后判定每點(diǎn)的RGB值大于還是小于閾值,大于則為255即黑色,小于閾值則為0即白色。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲一区二区三区精选| 国产精品二区三区免费播放心| 麻豆果冻传媒一二三区| 91久久精品国产一区蜜臀| 日本少妇三级三级三级| 欧美激情区一区二区三区| 亚洲中文字幕高清乱码毛片| 人妻亚洲一区二区三区| 国产精品一区欧美二区| 国产女高清在线看免费观看| 99久久精品午夜一区| 草草视频精品在线观看| 国产日韩欧美综合视频| 久久精品色妇熟妇丰满人妻91| 日韩少妇人妻中文字幕| 黄片在线观看一区二区三区 | 亚洲中文字幕高清视频在线观看| 久久99这里只精品热在线| 久七久精品视频黄色的| 日韩丝袜诱惑一区二区| 欧美亚洲另类久久久精品| 欧美日韩国产的另类视频| 亚洲一区二区精品免费| 国产永久免费高清在线精品| 亚洲国产天堂av成人在线播放| 亚洲a级一区二区不卡| 欧美日韩黑人免费观看| 黑鬼糟蹋少妇资源在线观看 | 日韩人妻少妇一区二区| 欧美日韩一区二区三区色拉拉| 在线视频免费看你懂的| 欧美日韩视频中文字幕| 色婷婷国产精品视频一区二区保健| 中文文精品字幕一区二区| 91精品国产综合久久精品| 国产精品大秀视频日韩精品| 中文字幕一区二区久久综合| 加勒比日本欧美在线观看| 激情亚洲内射一区二区三区| 国产欧美亚洲精品自拍| 久久亚洲午夜精品毛片|