亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 15737 | 回復(fù): 16
打印 上一主題 下一主題

用perl實(shí)現(xiàn) 圖片認(rèn)證碼識(shí)別 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-02-02 12:40 |只看該作者 |倒序?yàn)g覽
程序說(shuō)明

需要使用了兩個(gè)庫(kù)  1. Image::Magick 用來(lái)進(jìn)行圖片處理  2. imgseek 進(jìn)行圖片比較 求出相似度


程序因?yàn)槭褂玫?imgseek 所以只能在*nix下運(yùn)行


程序設(shè)計(jì)時(shí) 分兩個(gè)部分 1.建里特征圖片庫(kù)  2. 用隨即圖片與特征圖片庫(kù)進(jìn)行比較 求出相似度最高的值

這個(gè)程序僅僅是為了供大家研究參考    # 為了不惹麻煩 把測(cè)試網(wǎng)站刪除了  

一. 建立特征圖片庫(kù)

1. 下載 包含 0到9 共10個(gè)數(shù)字的圖片
  
    我這里是 手工下載了10張第一個(gè)數(shù)字不同的圖片

2. 對(duì)圖片進(jìn)行處理

    轉(zhuǎn)換成灰度圖 -> 2值化(我這里設(shè)定的闕值是20300)-> 把第一個(gè)數(shù)字切割下來(lái)
  1.    
  2. use Image::Magick;
  3. my $image = new Image::Magick;

  4. for my $num qw(00 01 02 03 04 05 06 07 08 09){
  5.         my $file = './image/'.$num.'.bmp';
  6.         $image->Read($file);
  7. }

  8. $image->Quantize(colorspace=>'gray');                  #灰度圖
  9. $image->Threshold(threshold=>'20300',channel=>'All');  # 2值化  闕值需要自己手工調(diào)整
  10. $image->Crop(width=>18, height=>25, x=>0, y=>0);       #切割圖片

  11. my $out = './image/I.bmp';
  12. $image->Write($out);

  13. $image = undef;
  14. exit;
復(fù)制代碼

  3. 提取出僅含有數(shù)字的區(qū)域 (即去掉四周的空白)
  1.   
  2. use List::Util qw(max min);
  3. use Image::Magick;

  4. for my $num (0..9){

  5. my $image = new Image::Magick;
  6. my $file = './image/I-'.$num.'.bmp';
  7. $image->Read($file);

  8. my ($w,$h)=$image -> Get('width','height');

  9. my (@px_x,@px_y);
  10. for my $x(0..$w){
  11.         for my $y (0..$h){
  12.                 my $px = $image -> GetPixel(x=>$x,y=>$y);
  13.                 if($px == 0){
  14.                         push @px_x,$x;
  15.                         push @px_y,$y;
  16.                 }
  17.         }
  18. }

  19. my ($xmax,$xmin,$ymax,$ymin) = (max(@px_x),min(@px_x),max(@px_y),min(@px_y));
  20. my $xw = $xmax-$xmin + 2;
  21. my $yh = $ymax-$ymin + 2;
  22. $xmin -= 1;
  23. $ymin -= 1;

  24. $image->Crop(width=>$xw, height=>$yh, x=>$xmin, y=>$ymin);

  25. #$image->Magnify;
  26. my $out = './flag/II-'.$num.'.bmp';
  27. $image->Write($out);

  28. $image = undef;

  29. }

  30. exit;
復(fù)制代碼
   
  4.存入到 圖片庫(kù)里

  1. use Imager;

  2. use Image::Seek qw(loaddb add_image query_id savedb);

  3. loaddb("imgdata.db");

  4. for my $num (0..9){
  5.         my $img = Imager->new();
  6.         my $file = './flag/II-'.$num.'.bmp';

  7.         $img->open(file => $file);

  8.         add_image($img,$num);
  9.         savedb("imgdata.db");
  10.        
  11.         $img = undef;
  12. }

復(fù)制代碼


二 隨即認(rèn)證碼 圖片識(shí)別

  1.隨機(jī)圖片下載加工
  1.    
  2. use List::Util qw(max min);

  3. use Image::Magick;
  4. use LWP::Simple;

  5. my $url = '****';  # 為了不惹麻煩 把測(cè)試網(wǎng)站刪除了
  6. my $file = './cut/tmp.bmp';
  7. getstore($url, $file);

  8. for my $num (0..3){
  9.         my $image = new Image::Magick;
  10.         $image->Read($file);
  11.         my ($w, $h,) = $image->Get('width', 'height');
  12.         $w /= 4;
  13.         my $xxx = $w * $num;
  14.        
  15.         $image->Quantize(colorspace=>'gray');
  16.         $image->Threshold(threshold=>'20300',channel=>'All');
  17.         $image->Crop(width=>$w, height=>$h, x=>$xxx, y=>0);
  18.        
  19.         $image->Write('./cut/t.bmp');
  20.         $image = undef;
  21.        
  22.         my $img = new Image::Magick;
  23.         $img->Read('./cut/t.bmp');
  24.         my (@px_x,@px_y);
  25.         for my $x(0..$w){
  26.                 for my $y (0..$h){
  27.                         my $px = $img -> GetPixel(x=>$x,y=>$y);
  28.                         if($px == 0){
  29.                                 push @px_x,$x;
  30.                                 push @px_y,$y;
  31.                         }
  32.                 }
  33.         }

  34.         my ($xmax,$xmin,$ymax,$ymin) = (max(@px_x),min(@px_x),max(@px_y),min(@px_y));
  35.         my $xw = $xmax-$xmin + 2;
  36.         my $yh = $ymax-$ymin + 2;
  37.         $xmin -= 1;
  38.         $ymin -= 1;

  39.         $img->Crop(width=>$xw, height=>$yh, x=>$xmin, y=>$ymin);
  40.        
  41.        
  42.         my $out = './cut/'.$num.'.bmp';
  43.         $img->Write($out);

  44.         $img = undef;
  45. }

復(fù)制代碼

   2. 識(shí)別
  1.    
  2. use Imager;

  3. use Image::Seek qw(loaddb add_image query_id savedb remove_id);

  4. loaddb("imgdata.db");

  5. for my $num (0..3){
  6. my $img = Imager->new();
  7. my $file = './cut/'.$num.'.bmp';

  8. $img->open(file => $file);

  9. add_image($img,10);
  10. savedb("imgdata.db");

  11. my @results = query_id(10); # What looks like this photo?
  12. remove_id(10); # Just remove id from database.

  13.         print $results[1]->[0];
  14. }

復(fù)制代碼

[ 本帖最后由 hitsubunnu 于 2009-2-3 17:27 編輯 ]

論壇徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辭舊歲徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [報(bào)告]
發(fā)表于 2009-02-02 13:01 |只看該作者
謝謝共享

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-02-02 14:10 |只看該作者
3qu

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-08-04 16:45 |只看該作者
非常不錯(cuò),正需要著呢,謝謝了

論壇徽章:
1
辰龍
日期:2014-05-15 19:37:15
5 [報(bào)告]
發(fā)表于 2010-11-26 13:33 |只看該作者
發(fā)現(xiàn)根本沒(méi)有 GetPixel 這個(gè)函數(shù)

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-11-26 13:47 |只看該作者
學(xué)習(xí)了。。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-11-26 13:50 |只看該作者
記得以前在一個(gè)博客里看過(guò)這篇文章,在windows上沒(méi)做成功~

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-11-26 14:24 |只看該作者
謝謝分享,學(xué)習(xí)中

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-11-26 14:25 |只看該作者
發(fā)現(xiàn)根本沒(méi)有 GetPixel 這個(gè)函數(shù)
iakuf 發(fā)表于 2010-11-26 13:33


檢查你的 Image::Magick 是否安裝正確

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-11-26 14:30 |只看該作者
回復(fù) 7# x9x9

我寫(xiě)的很清楚 imgseek 不支持 win
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP