日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

验证码 -图形图像识别的算法。http://blog.csdn.net/xtalk2008/archive/2007/11/01/1861310.aspx...

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 验证码 -图形图像识别的算法。http://blog.csdn.net/xtalk2008/archive/2007/11/01/1861310.aspx... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
驗證碼 -圖形圖像識別的算法。http://blog.csdn.net/xtalk2008/archive/2007/11/01/1861310.aspx

圖像經過處理后,還需要進行分割,才能進行比較或識別,下面就是圖像分割的算法
原始圖

分割后的圖形
12345678?
圖像分割代碼如下
? TImageInfo = record
??? Bmp: TBitmap;
??? Rect: TRect;
? end;
? pImageInfo = ^TImageInfo;

function BTSegment(Bmp: TBitmap; CType, MaxValue, MinValue: Integer): TList;
? procedure Connect1(tbmp: tbitmap; x, y: integer; var _xmin, _xmax, _ymin, _ymax: integer; Color: TColor = 1);
? begin
??? tbmp.PixelFormat := pf24bit;
??? tbmp.canvas.pixels[x,y] := Color;
??? _xmin := min(x, _xmin); _xmax := max(x, _xmax); _ymin := min(y, _ymin); _ymax := max(y, _ymax);
??? if tbmp.canvas.pixels[x + 1, y + 0] = ClBlack then connect1(tbmp, x + 1, y + 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y - 1] = ClBlack then connect1(tbmp, x + 1, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 0, y - 1] = ClBlack then connect1(tbmp, x + 0, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y - 1] = ClBlack then connect1(tbmp, x - 1, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y + 0] = ClBlack then connect1(tbmp, x - 1, y + 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y + 1] = ClBlack then connect1(tbmp, x - 1, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 0, y + 1] = ClBlack then connect1(tbmp, x + 0, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y + 1] = ClBlack then connect1(tbmp, x + 1, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
? end;

? procedure Connect2(tbmp: tbitmap; x, y: integer; var _xmin, _xmax, _ymin, _ymax: integer; Color: TColor = 1);
? begin
??? tbmp.PixelFormat := pf24bit;
??? tbmp.canvas.pixels[x,y] := Color;
??? _xmin := min(x, _xmin); _xmax := max(x, _xmax); _ymin := min(y, _ymin); _ymax := max(y, _ymax);
??? if tbmp.canvas.pixels[x + 0, y + 2] = ClBlack then connect2(tbmp, x + 0, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y + 2] = ClBlack then connect2(tbmp, x - 2, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y + 2] = ClBlack then connect2(tbmp, x - 1, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y + 2] = ClBlack then connect2(tbmp, x + 1, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y + 2] = ClBlack then connect2(tbmp, x + 2, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y + 1] = ClBlack then connect2(tbmp, x + 2, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y + 0] = ClBlack then connect2(tbmp, x + 2, y + 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y - 1] = ClBlack then connect2(tbmp, x + 2, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y - 2] = ClBlack then connect2(tbmp, x + 2, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y - 2] = ClBlack then connect2(tbmp, x + 1, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 0, y - 2] = ClBlack then connect2(tbmp, x + 0, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y - 2] = ClBlack then connect2(tbmp, x - 1, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y - 2] = ClBlack then connect2(tbmp, x - 2, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y - 1] = ClBlack then connect2(tbmp, x - 2, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y - 0] = ClBlack then connect2(tbmp, x - 2, y - 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y + 1] = ClBlack then connect2(tbmp, x - 2, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
? end;

? procedure Connect3(tbmp: tbitmap; x, y: integer; var _xmin, _xmax, _ymin, _ymax: integer; Color: TColor = 1);
? begin
??? tbmp.PixelFormat := pf24bit;
??? tbmp.canvas.pixels[x,y] := Color;
??? _xmin := min(x, _xmin); _xmax := max(x, _xmax); _ymin := min(y, _ymin); _ymax := max(y, _ymax);
??? if tbmp.canvas.pixels[x - 3, y + 3] = ClBlack then Connect3(tbmp, x - 3, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y + 3] = ClBlack then Connect3(tbmp, x - 2, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y + 3] = ClBlack then Connect3(tbmp, x - 1, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 0, y + 3] = ClBlack then Connect3(tbmp, x - 0, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y + 3] = ClBlack then Connect3(tbmp, x + 1, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y + 3] = ClBlack then Connect3(tbmp, x + 2, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y + 3] = ClBlack then Connect3(tbmp, x + 3, y + 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y - 3] = ClBlack then Connect3(tbmp, x - 3, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 2, y - 3] = ClBlack then Connect3(tbmp, x - 2, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 1, y - 3] = ClBlack then Connect3(tbmp, x - 1, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 0, y - 3] = ClBlack then Connect3(tbmp, x - 0, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 1, y - 3] = ClBlack then Connect3(tbmp, x + 1, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 2, y - 3] = ClBlack then Connect3(tbmp, x + 2, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y - 3] = ClBlack then Connect3(tbmp, x + 3, y - 3, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y + 2] = ClBlack then Connect3(tbmp, x - 3, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y + 1] = ClBlack then Connect3(tbmp, x - 3, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y + 0] = ClBlack then Connect3(tbmp, x - 3, y + 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y - 2] = ClBlack then Connect3(tbmp, x - 3, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x - 3, y - 1] = ClBlack then Connect3(tbmp, x - 3, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y + 2] = ClBlack then Connect3(tbmp, x + 3, y + 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y + 1] = ClBlack then Connect3(tbmp, x + 3, y + 1, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y + 0] = ClBlack then Connect3(tbmp, x + 3, y + 0, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y - 2] = ClBlack then Connect3(tbmp, x + 3, y - 2, _xmin, _xmax, _ymin, _ymax, Color);
??? if tbmp.canvas.pixels[x + 3, y - 1] = ClBlack then Connect3(tbmp, x + 3, y - 1, _xmin, _xmax, _ymin, _ymax, Color);
? end;
var
? x, y, _x, _y, xmin, xmax, ymin, ymax: integer;
? pII: pImageInfo;
begin
? Result := TList.Create;
? Bmp.PixelFormat := pf24bit;
? for x := 1 to Bmp.Width - 2 do for y := 1 to Bmp.Height - 2 do
? begin
??? if Bmp.Canvas.Pixels[x, y] <> ClBlack then Continue;
??? xmin := x; xmax := x; ymin := y; ymax := y;
??? if CType = 1 then Connect1(Bmp, x, y, xmin, xmax, ymin, ymax, 1);
??? if CType = 2 then Connect2(Bmp, x, y, xmin, xmax, ymin, ymax, 1);
??? if CType = 3 then Connect3(Bmp, x, y, xmin, xmax, ymin, ymax, 1);
??? if (xmax - xmin < MaxValue) and (xmax - xmin > MinValue) and (ymax - ymin < MaxValue) and (ymax - ymin > MinValue) then
??? begin
????? New(pII); pII.Bmp := TBitmap.Create; pII.Bmp.PixelFormat := pf24bit; pII.Bmp.Width := xmax - xmin + 4; pII.Bmp.Height := ymax - ymin + 4;
????? for _x := xmin - 2 to xmax + 2 do for _y := ymin - 2 to ymax + 2 do if bmp.Canvas.Pixels[_x, _y] = 1 then pII.Bmp.Canvas.Pixels[_x - xmin + 2, _y - ymin + 2] := ClBlack else pII.Bmp.Canvas.Pixels[_x - xmin + 2, _y - ymin + 2] := ClWhite;
????? pII.Rect.Left := xmin; pII.Rect.Right := xmax; pII.Rect.Top := ymin; pII.Rect.Bottom := ymax;
????? Result.Add(pII);
??? end;
? end;
? FreeAndNil(Bmp);
end;

posted on 2011-06-21 23:00 linyawen 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/linyawen/archive/2011/06/21/2086440.html

總結

以上是生活随笔為你收集整理的验证码 -图形图像识别的算法。http://blog.csdn.net/xtalk2008/archive/2007/11/01/1861310.aspx...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品乱码久久久久久不卡 | 伊人网五月天 | 欧美成人性生活 | 麻豆自拍偷拍 | 福利视频免费观看 | 无遮挡国产 | 欧美 国产 日本 | 超碰在线99 | 国产一卡二 | 国产精品久久久久av | 99riav国产精品| 玖玖视频| 粉嫩av网站| 黄色香蕉视频 | 少妇又色又爽又黄的视频 | 午夜视频黄色 | 蜜臀在线观看 | 亚洲成人无码久久 | 国产a国产片国产 | 又粗又猛又爽又黄的视频 | 日韩精品一区二区三区av | 亚洲欧美一区二区激情 | 撸大师av| 色呦呦在线免费观看 | 美女涩涩视频 | 91麻豆免费视频 | 韩国bj大尺度vip福利网站 | 天天夜夜骑 | 精品人伦一区二区 | 永久国产 | 亚洲乱轮视频 | 亚洲精品国产精品乱码不卡 | 中文字幕av无码一区二区三区 | 欧美视频免费 | 色综合一区 | 国产第一页在线观看 | 久热伊人| 日韩亚洲影院 | 大黄一级片 | 久久爱综合 | 亚洲 欧美 激情 另类 | 91丝袜国产在线观看 | 美女一级片| 综合影院| av在线不卡免费观看 | 亚洲奶水xxxx哺乳期 | 在线中出 | 欧美三级午夜理伦三级小说 | 中国黄色片子 | 久久综合亚洲色hezyo国产 | 美妇湿透娇羞紧窄迎合 | 亚洲精品四区 | 国产成人久久久 | 国产丝袜视频在线 | 国产在线成人精品午夜 | 日本少妇中文字幕 | 青青草视频网站 | 一区二区男女 | 中文字幕天堂在线 | av资源首页 | 欧美一级爱爱视频 | 国产真实生活伦对白 | 精东传媒在线 | 欧亚乱熟女一区二区在线 | 欧美freesex黑人又粗又大 | 偷偷在线观看免费高清av | 婷婷玖玖| 东京热无码av一区二区 | 黄色aa大片 | 探花国产在线 | 污网站免费在线观看 | 日韩av一卡二卡 | 美女一级 | 天堂va蜜桃一区二区三区漫画版 | 中文字幕爱爱 | 国产91免费在线观看 | 久久久久成人网站 | 激情婷婷久久 | 亚洲一区二区三区久久久成人动漫 | 强行挺进白丝老师翘臀网站 | 奇米影视亚洲春色 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 开心六月婷婷 | 欧美日韩精品一区二区在线播放 | 男女网站在线观看 | 日韩成人在线观看视频 | 偷拍视频久久 | 粗大的内捧猛烈进出在线视频 | 国内毛片视频 | www色网站| 成人免费在线看片 | 一区二区三区四区影院 | 伦理片av| 国产精品久久久久久久久久妞妞 | 久久成人乱码欧美精品一区二区 | 毛片毛多水多 | 麻豆91茄子在线观看 | 亚洲天堂男人av | 免费中文字幕日韩欧美 |