- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图片验证码识别
图片验证码识别思路和方法(VB.Net) 作者:ntdrv??? 来源:ntdrv的博客 ??? 更新时间:2010-6-28 除了本文关于图片验证码识别的思路,乐博网还有一篇关于图片验证码的文章和源代码,
访问地址:???????? VB.Ne图形验证码识别的源代码
图片验证码识别思路和方法(VB.Net) 由乐博网自转载 /Blog/Article.aspx?ID=2311
?????? 投票软件比较有技术含量的部分就在验证码识别。为防止投票作弊,很多投票网站都会加随机验证码,输入验证码后才能投票。但是加了验证码是否就能万无一失呢,也不尽然。虽然不是所有验证码都能识别(如QQ的变形汉字验证码是不太可能用软件识别的,个人觉得),但还是有很多验证码可以用软件来识别的。
下面以天涯博客里的评论验证码为例,说明验证码识别的基本思路和方法:
(网页截图)
第一步、获取验证码图片
C#可以用HttpWebRequest类GET验证码的网址,得到返回的数据流,再将数据流值赋给Bitmap变量。在Winform里放一个PictureBox控件,将它的Image属性指定为Bitmap变量,就可以显示出验证码图片了。也可以使用Bitmap的Save方法将图片保存成Bmp文件。
??? Stream resStream = response.GetResponseStream();//得到验证码数据流??? Bitmap sourcebm = new Bitmap(resStream);//初始化Bitmap图片
在Photoshop中将验证码图片放大1600%,如下:
??
第二步、将验证码图片去色(将彩色转换为灰度)
去色是为了进一步做成黑白双色图片。
??? Color c = sourcebm.GetPixel(x, y);??? int luma = (int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11);//转换灰度的算法??? sourcebm.SetPixel(x, y, Color.FromArgb(luma, luma, luma));
??第三步、去杂色,转换为黑白图片
从灰度图片中可以看出,数字的颜色比较深,而杂色都是比较浅,所以可以设定一个临界颜色值,颜色高于或等于这个值的设置为白色,低于这个值的设置为黑色。
??? Color c = sourcebm.GetPixel(x, y);??? if (c.R = critical_value)??????? sourcebm.SetPixel(x, y, Color.FromArgb(255, 255, 255));??? else??????? sourcebm.SetPixel(x, y, Color.FromArgb(0, 0, 0));
??第四步、动态得到每个数字的边界
?
for (int x = 0; x sourcebm.Width; x++){??? myColumn = true;??? for (int y = 0; y sourcebm.Height; y++)??? {??????? Color c = sourcebm.GetPixel(x, y);??????? if (c.R == 0 charStart == false)//第一次出现黑点??????? {??????????? widthStartX[charNum] = x;??????????? charStart = true;??????????? break;??????? }??????? if (c.R == 0 charStart == true)//后续出现黑点??????? {??????????? myColumn = false;??????????? break;??????? }??? }??? if (myColumn == true charStart == true widthStartX[charNum] x)//如果当列没有黑点并且前面出现过黑点还没结束??? {??????? widthEndX[charNum] = x - 1;??????? charStart = false;??????? charNum++;??? }??? if (charStart == true myColumn == false x == (bmp.Width - 1))//如果开始出现黑点了,并且最后一列也有黑点??? {??????? widthEndX[charNum] = x;??????? charSt
您可能关注的文档
- 国家工科基础课程教学基地.doc
- 国家地理摄影图集一.ppt
- 国家智能交通网企业形象识别系统CIS.ppt
- 国家级教学成果奖推荐.doc
- 国家科技项目农业信息化申报书.doc
- 国家职业标准-咖啡师.doc
- 国家课程标准专辑之音乐课程标准.doc
- 国家赔偿法复习.doc
- 国小学童物理科学迷思概念研究:大气压力部分.ppt
- 国庆节愉快-国庆节节日假日假期公司早会晨会夕会幻灯片培训课件专题材料.ppt
- 讲稿:深入理解“五个注重”把握进一步深化改革统筹部署以钉钉子精神抓好落实.pdf
- 副市长在2025年全市医疗工作会议上的讲话.docx
- 2025年市县处级以上党委(党组)理论学习中心组专题学习计划.docx
- 市民族宗教事务局党组书记、局长2024年度民主生活会个人对照检视发言材料.docx
- 烟草局党组书记2024年度抓基层党建工作述职报告.docx
- (汇编)学习2025年全国教育工作会议精神心得体会发言心得感悟.pdf
- 汇编学习领会在二十届中纪委四次全会上的重要讲话精神心得体会.pdf
- 在2025年镇安全生产、消防安全和生态环境保护第一次全体会议上的讲话提纲.docx
- 书记干部座谈会上的讲话+纪委全会上的讲话.pdf
- 党课:从毛泽东诗词中感悟共产党人初心使命.docx
文档评论(0)