有数字的微信小程序图形验证码码怎么解?

jsp 用 kaptcha 插件生成数字运算图形验证码
kaptcha 是一个扩展自 simplecaptcha 的验证码库,是google开源出来的,本文我们在jsp中用kaptcha扩展成可以进行数字运算的图形验证码。1.从官网/p/kaptcha/下载kaptcha压缩文件,解压文件后里面有一个war文件,打开Eclipse/MyEclipse将其import进去,然后部署到服务器,在浏览器输入url即可看到kaptcha官方提供的基本demo的运行情况,现在将其改为加法计算验证。2.首先查看web.xml文件发现用来生成验证码的servlet为KaptchaServlet3.找到KaptchaServlet.class文件,然后进行反编译。4.新建一个自己的验证码MyKaptchaServlet,将反编译得到的源码拷贝进来。5.对MyKaptchaServlet做如下修改。修改后MyKaptchaServlet.java代码如下:package com.xhc.kaptchaSimport com.google.code.kaptcha.Pimport com.google.code.kaptcha.util.Cimport java.awt.image.BufferedIimport java.io.IOEimport java.util.Dimport java.util.Eimport java.util.Pimport javax.imageio.ImageIO;import javax.servlet.Simport javax.servlet.ServletCimport javax.servlet.ServletEimport javax.servlet.ServletOutputSimport javax.servlet.http.HttpSimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpSpublic class MyKaptchaServlet extends HttpServlet implements Servlet { private P private Producer kaptchaP private String sessionKeyV private String sessionKeyDateV public MyKaptchaServlet() { this.props = new Properties(); this.kaptchaProducer = this.sessionKeyValue = this.sessionKeyDateValue = } public void init(ServletConfig conf) throws ServletException { super.init(conf); ImageIO.setUseCache(false); Enumeration initParams = conf.getInitParameterNames(); while (initParams.hasMoreElements()) {
String key = (String) initParams.nextElement();
String value = conf.getInitParameter(key);
this.props.put(key, value); } Config config = new Config(this.props); this.kaptchaProducer = config.getProducerImpl(); this.sessionKeyValue = config.getSessionKey(); this.sessionKeyDateValue = config.getSessionDate(); } public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { resp.setDateHeader(&Expires&, 0L); resp.setHeader(&Cache-Control&, &no-store, no-cache, must-revalidate&); resp.addHeader(&Cache-Control&, &post-check=0, pre-check=0&); resp.setHeader(&Pragma&, &no-cache&); resp.setContentType(&image/jpeg&); String capText = this.kaptchaProducer.createText(); String str1 = capText.substring(0, 2); String str2 = capText.substring(2, 4); int result = Integer.valueOf(str1) + Integer.valueOf(str2); req.getSession().setAttribute(this.sessionKeyValue, result+&&); req.getSession().setAttribute(this.sessionKeyDateValue, new Date()); BufferedImage bi = this.kaptchaProducer.createImage(str1 + &+& + str2
+ &=?&); ServletOutputStream out = resp.getOutputStream(); ImageIO.write(bi, &jpg&, out); }}6.修改web.xml配置文件,将servlet-class指定到MyKaptchaServlet参考官方文档/p/kaptcha/wiki/ConfigParameters将其他属性也配置进去,修改后web.xml文件如下:&?xml version=&1.0& encoding=&UTF-8&?&&web-app xmlns=&/xml/ns/j2ee& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&xsi:schemaLocation=&/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd&version=&2.4&&&servlet&&servlet-name&Kaptcha&/servlet-name&&!-- &servlet-class&com.google.code.kaptcha.servlet.KaptchaServlet&/servlet-class& --&&servlet-class&com.xhc.kaptchaServlet.MyKaptchaServlet&/servlet-class&&!-- For a complete list of Init Parameters, please see: /p/kaptcha/wiki/ConfigParameters --&&!-- 验证码边界,合法值yes or no --&&init-param&&param-name&kaptcha.border&/param-name&&param-value&yes&/param-value&&/init-param&&!-- 边界颜色,合法值 r,g,b (and optional alpha) or white,black,blue --&&init-param&&param-name&kaptcha.border.color&/param-name&&param-value&black&/param-value&&/init-param&&!-- 边界厚度,合法值 大于0 --&&init-param&&param-name&kaptcha.border.thickness&/param-name&&param-value&1&/param-value&&/init-param&&!-- 验证码图片宽度 --&&init-param&&param-name&kaptcha.image.width&/param-name&&param-value&200&/param-value&&/init-param&&!-- 验证码图片高度 --&&init-param&&param-name&kaptcha.image.height&/param-name&&param-value&50&/param-value&&/init-param&&!-- 验证码图片生成类,默认由DefaultKaptcha类生成,可以自己写一个图片生成类,需要实现Producer接口并继承Configurable 类 --&&init-param&&param-name&kaptcha.producer.impl&/param-name&&param-value&com.google.code.kaptcha.impl.DefaultKaptcha&/param-value&&/init-param&&!-- 验证码生成类,默认由DefaultTextCreator类生成,可以自己写一个验证码生成类,需要实现TextProducer接口并继承Configurable 类 --&&init-param&&param-name&kaptcha.textproducer.impl&/param-name&&param-value&com.google.code.kaptcha.text.impl.DefaultTextCreator&/param-value&&/init-param&&!-- 用来生成验证码的字符集 --&&init-param&&param-name&kaptcha.textproducer.char.string&/param-name&&param-value&&/param-value&&/init-param&&!-- 生成验证码的长度 --&&init-param&&param-name&kaptcha.textproducer.char.length&/param-name&&param-value&4&/param-value&&/init-param&&!-- 验证码字体,多个值用逗号隔开 --&&init-param&&param-name&kaptcha.textproducer.font.names&/param-name&&param-value&Arial,Courier&/param-value&&/init-param&&!-- 字体大小 --&&init-param&&param-name&kaptcha.textproducer.font.size&/param-name&&param-value&40&/param-value&&/init-param&&!-- 字体颜色 --&&init-param&&param-name&kaptcha.textproducer.font.color&/param-name&&param-value&blue&/param-value&&/init-param&&!-- 验证码字符间隔 --&&init-param&&param-name&kaptcha.textproducer.char.space&/param-name&&param-value&5&/param-value&&/init-param&&!-- 图片干扰生成类,默认由DefaultNoise类生成,可以自己写一个图片干扰类,需要实现NoiseProducer接口并继承Configurable 类 --&&init-param&&param-name&kaptcha.noise.impl&/param-name&&param-value&com.google.code.kaptcha.impl.DefaultNoise&/param-value&&/init-param&&!-- 干扰颜色 --&&init-param&&param-name&kaptcha.noise.color&/param-name&&param-value&yellow&/param-value&&/init-param&&!--获取扭曲的不同风格的验证码,官方实现的有ShadowGimpy,FishEyeGimpy,WaterRipple,其中用来FishEyeGimpy之后上面设定的干扰线不起作用--&&init-param&&param-name&kaptcha.obscurificator.impl&/param-name&&param-value&com.google.code.kaptcha.impl.FishEyeGimpy&/param-value&&/init-param&&!--渐变背景色,初始颜色 --&&init-param&&param-name&kaptcha.background.clear.from&/param-name&&param-value&gray&/param-value&&/init-param&&!-- 渐变北京市,最终颜色 --&&init-param&&param-name&kaptcha.background.clear.to&/param-name&&param-value&white&/param-value&&/init-param&&!-- 文字渲染器 --&&init-param&&param-name&kaptcha.word.impl&/param-name&&param-value&com.google.code.kaptcha.text.impl.DefaultWordRenderer&/param-value&&/init-param&&init-param&&param-name&kaptcha.session.key&/param-name&&param-value&KAPTCHA_SESSION_KEY&/param-value&&/init-param&&init-param&&param-name&kaptcha.session.date&/param-name&&param-value&KAPTCHA_SESSION_DATE&/param-value&&/init-param&&/servlet&&servlet-mapping&&servlet-name&Kaptcha&/servlet-name&&url-pattern&/Kaptcha.jpg&/url-pattern&&/servlet-mapping&&welcome-file-list&&welcome-file&KaptchaExample.jsp&/welcome-file&&/welcome-file-list&&/web-app&7.效果图java自动生成验证码插件-kaptcha
kaptcha一个很好用的验证码插件,java版的,很不错的一个插件,只用简单的在web.xml中设置几个属性,一个很漂亮的验证码就出来了。其他的参数都可以自己设置,最牛的就是提供了接口,可以自己定义哦。html页面代码&form action=&submit.action&&
&img src=&kaptcha.jpg& /& &input type=&text& name=&kaptcha& value=&& /&&/form&web.xml配置代码&servlet&
&servlet-name&Kaptcha&/servlet-name&
&servlet-class&com.google.code.kaptcha.servlet.KaptchaServlet&/servlet-class&&/servlet&&servlet-mapping&
&servlet-name&Kaptcha&/servlet-name&
&url-pattern&/kaptcha.jpg&/url-pattern&&/servlet-mapping&java 代码String kaptchaExpected = (String)request.getSession()
.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);String kaptchaReceived = request.getParameter(&kaptcha&); if (kaptchaReceived == null || !kaptchaReceived.equalsIgnoreCase(kaptchaExpected)){
setError(&kaptcha&, &Invalid validation code.&);}点击显示代码 刷新方法 js方法&img src=&/kaptcha& width=&200& id=&kaptchaImage& /&&script type=&text/javascript&&
$(function(){
$('#kaptchaImage').click(function () {
$(this).attr('src', '/kaptcha.jpg?' + Math.floor(Math.random()*100) );
});&/script&&br /&&small&Can't read the image? Click it to get a new one.&/small&其他参数设置&init-param&
&param-name&kaptcha.border&/param-name&
&param-value&yes&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.border.color&/param-name&
&param-value&105,179,90&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.textproducer.font.color&/param-name&
&param-value&black&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.image.width&/param-name&
&param-value&500&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.image.height&/param-name&
&param-value&300&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.textproducer.font.size&/param-name&
&param-value&90&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.session.key&/param-name&
&param-value&code&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.textproducer.char.length&/param-name&
&param-value&4&/param-value&
&/init-param&
&init-param&
&param-name&kaptcha.textproducer.font.names&/param-name&
&param-value&宋体,楷体,微软雅黑&/param-value&
&/init-param&
更多相关文章
kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片.同时将生成的验证码字符串放到 HttpSession中1. ...
我们知道网站地址有利于搜索引擎的收录,wordpress有自带的xml格式的网站地图,如果我们也希望生成txt格式的地图呢?本文我们用纯代码方法来实现.该方法不需要安装任何插件,纯代码生成.&?php require('./wp-blog-header.php'); header('Conte ...
利用PHP5中GD库生成图形验证码
类似于下面这样
1.利用GD库函数生成图片,并在图片上写指定字符
imagecreatetruecolor 新建一个真彩色图像
imagecolorallocate 为一幅图像分配颜色(调色板)
imagestring 绘制字符
imageline 绘 ...
jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码. 此插件是能够独立使用的,体积也比较小如何使用1.首先在页面中加入jquery库文件和qrcode插件. 代码如下 &script type=&quot ...
ImageCode函数通过GIFEncoder类实现的GIF动画的PHP源代码,有兴趣的朋友可以研究一下. 代码如下 &?php/** * 调用示例 * */session_start();$randCode = '';$chars = 'abcdefghjkmnpqrstuvwxyzABCD ...
我们知道,kaptcha是google开源的生成验证码的工具,有了kaptcha我们可以生成各式各样的图形验证码,本文我们讲讲如果在jsp中(spring mvc 框架)集成配置kaptcha.关于kaptcha介绍,我们就不说了,网上一堆的资料.使用kaptcha可以方便的配置: 验证码的字体 验 ...
下面总结了三种利用jsp生成html静态页面的jsp程序类,有需要的朋友可参考参考.例1 代码如下 public class JspToHtml { private static String title = &标题1&; private static String contex ...
来源: 在线演示
本地下载 是不是也考虑生成一个矢量类型的地图?今天我们将介绍的这款jQuery插件 - JQVMAP 可 以方便的帮助你生成漂亮的矢量地图.在现代浏览器中它使用了SVG(Scalable Vector Graphics)技术生成地图图 ...
java中类与类关系的UML图与代码表现,有需要的同学可参考一下.类与类之间存在以下关系: ...
CentOS 系统使用 yum 安装的 SaltStack 是基于 Python 2.6 的,目前 Python 最新版本为 2.7.10,这里使用最新的 Python 来安装 SaltStack首先安装 Pytho ...
systemd是一个init程序.根据之前 Upstart的一些介绍大家应该简要了解了传统 ...
Mozilla Firefox任意代码执行漏洞(CVE-725)发布日期:20 ...
Black Lab 企业 Linux 6.6 发布下载,更新组件包括:Xfce 4.12, ...
nocatelog模式本地完整复制目标数据库orcl到副本数据库db 1.创建副本数据库的 ...
skalibs 发布 1.3.0 版本,重写了 libbiguint ,libstddjb ...
adevs 2.8 改用更宽松的 BSD 许可证进行发布,原来是 LGPL.Adevs ( ...
Android的selector的用法:Android 专题页面 http://www.l ...
1)安装PostgresQL模块:
进入到/usr/local/lib:发现有一个nod ...青青子衿, 悠悠我心, 但为君故, 沉吟至今
破解图片验证码限制的一般思路
  相信大家都有在论坛灌水的经历吧?但是如果你连续发表统一内容的东西在论坛中,不久论坛的整个板块就全是你发表的信息了,其他信息全被挤在了后面。假设你发表的信息够多,版主都删不完时,那么这个论坛基本就报废了!其他的商业论坛也意识到了防止恶意灌水的重要性,纷纷使用了一些防止恶意灌水的措施,有发贴间隔时间的限制、同一IP地址的发贴数限制、内容不能重复等,但是这些都不是今天的重点,由于论坛使用的是一个公用发贴表单,需要突破唯一的难点是验证码。(为了防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试或是防止不断提交某网络信息而采用的一种网络通行方式。随机生成字符信息放入图片中,防止计算机直接识别。比如招商银行的网上个人银行,腾讯的QQ社区等等)  验证码分为如下几类:数字型、字符型、符号型、综合型。  一般验证码属于数字型的,不过有的图片中生成了不少彩色和黑白的噪音点(指验证图片上的斑点)。那么我们应该怎么去识别呢?传统的验证码识别方式很简单,由于数字的位置是固定的,所以我们只需要提取每一幅数字的图片(没有噪音点的)然后把每一个特殊数字独有的象素位置记录下来,然后在网络上提取需要破解的特征码,祛除噪音点,对其位置和记录位置进行比对,那就是么就能确定相应的数字了。  总结一下传统的就是:  1.先分析验证码,前景颜色是否不定  2.然后把验证码的宽度/验证码文字个数,比如一验证码下载后宽度为60,有4个数字,那么就60/4=15,然后保存每个字,如果只有数字保存0-9数字到位图文件,如果英文那更麻烦点,0-9,A-Z都要保存到位图,位图的前景色都不变,保持一种颜色,背景随便你改不改  3.如果前景要变则将文字统一为同种颜色,每个数字0-9的点阵都有个公共点,取该公共点颜色然后把前景全部统一成一种颜色,比如白色{255,255,255},位图的结构是BGR,而不是RGB  4.然后进行比较,如果验证码的一点为白色,第2步保存的位图同一点也是白色,那么频率增加1  5.最后频率最高的就是验证码了!  接下来要做的就是做个post程序了,这个太简单了,代码你就自己写吧!不过也要做到如下细节:做成多线程程序进行发贴,不然程序会失去响应的。最好是可以导入大量的代理IP的,然后就是发贴的内容最后加上几个随机字符,这样可以防止重复贴的过滤!最重要的,只是做测试,发贴量不要太多、不要乱发广告贴!  其实上述方法已经不是只是对验证码进行识别了,完全可以用到现实生活中去,比如说手写体识别、车牌识别等等,但是现实生活中我们还要进行更多的加工,比如说圆形检测,多边形检测等等。所以说从网络安全技术中,也有很多东西能造福社会,还等待我们继续创造!
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
请问怎么用java程序获取验证码图片? 非常谢谢
这个太难了吧!!!
没明白,月光什么都会,真强
不可行水分子脚本论坛 于
13:17:52 回复这些都是比较基础的验证码破解如果有需要可以来我的水分子脚本交流或定做验证码识别和一些自动
很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好
.三代分速度
只说了最简单的那种形式,现在哪有这么简单的 背景颜色加了怎么办?
字母数字混合怎么办? 符号居然还是有时斜有时正怎么办 ?这些问题的解决已经不能简单的用原来的方式解决了
像 imgtel.aspx?tel=D6CAC9B074E2C40CF1A46 这样生成的图片,如何读取图片的内容呢 ?
5我惹人sd dsfsd
好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好很好
呵呵,说得倒好听,你这么做能识别出几个验证码来?
.smilefish
楼上的,如果这么牛根本不用卖这么低的价钱,汉王,紫光都可以倒闭了
废话,谁不知道是这么做,你以为图像识别这么容易.此文 无意义.
.太平洋4203
呵呵,简单的破解验证码我搞过,用的就是上面说的方法,但是用这种方法用在QQ的汉字验证码就不好搞了啊,数据量太大了.
.recognition
基于神经网络的通用破解方法
汉字验证码,如何破解呢?
对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对
对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对
说得像放屁一样.
听起来不错,不过代码写起来肯定比较困难
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.识别出图片里的数字和字母 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 15时,
一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现的字母和数字基本就那几个,所以识别库的范围设定的比较少。原理和算法在代码中做了详细说明,功能存在很大的局限性,但我的想法是把这个思路和实现的办法共享出来。源码下载地址:http://git.oschina.net/bobo2cj/iamge2text
代码片段(3)
1.&[图片] 主界面.png&&&&
2.&[代码]提取出该图片内的字符&&&&
* 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比
* 获取字库:通过下面代码中generateLicense(Bitmap singlepic)方法获得,具体操作:
从图片中截图出(抠出)一个字符,然后处理得到二维的二进制矩阵,比如下面的字符1对应的二维矩阵
* 注意:【相同字符,比如1,不同字体,字号,不同缩放大小的图片,获得到的二位矩阵中0、1排列和数量都是不同的!
故按照此方法来写出匹配所有字的话,那字库就大了。。。】
/// &summary&
/// 提取出该图片内的字符(将进过灰度处理的图片转化为0、1的二位数组)
/// &/summary&
/// &param name="singlepic"&图片来源&/param&
public void generateLicense(Bitmap singlepic)
char[,] charArray = new char[singlepic.Height, singlepic.Width];
//定义个chai型的二维数组记录每个像素上0/1的值,形成一个矩形
int imageWidth = 0;
//记录图片的像素宽度
int imageHeight = 0;
//记录图片的像素高度
int dgGrayValue = 128;
//string code = "";
//存储每个像素的0/1
for (int posy = 0; posy & singlepic.H posy++)
{//从上到下
string codeCache = "";
//存储每行的像素的0/1
for (int posx = 0; posx & singlepic.W posx++)
{//从左到右
piexl = singlepic.GetPixel(posx, posy);
if (piexl.R & dgGrayValue)
{// 如果该像素的颜色为黑色,值就为“1”
codeCache = codeCache + "1";
{// 否则该像素的颜色为白色,值就为“0”
codeCache = codeCache + "0";
char[] array = codeCache.ToCharArray();
//每行的0/1的值用数字保存,以便于进行循环处理
//code += codeCache + "\n";
for (imageWidth = 0; imageWidth & array.L imageWidth++)
charArray[imageHeight, imageWidth] = array[imageWidth];
//通过循环将每行值转存到二维数组中
imageHeight++;
//*********************以上代码可用来获取一个字的图片二进制数组,即字库*****************************
//开始和字库进行匹配(我的工具中只需要下面的几个字符)
findWord(charArray, char0, imageHeight, imageWidth, BinaryWidth0, BinaryHeight0, '0');
findWord(charArray, char1, imageHeight, imageWidth, BinaryWidth1, BinaryHeight1, '1');
findWord(charArray, char2, imageHeight, imageWidth, BinaryWidth2, BinaryHeight2, '2');
findWord(charArray, char3, imageHeight, imageWidth, BinaryWidth3, BinaryHeight3, '3');
findWord(charArray, char4, imageHeight, imageWidth, BinaryWidth4, BinaryHeight4, '4');
findWord(charArray, char5, imageHeight, imageWidth, BinaryWidth5, BinaryHeight5, '5');
findWord(charArray, char6, imageHeight, imageWidth, BinaryWidth6, BinaryHeight6, '6');
findWord(charArray, char7, imageHeight, imageWidth, BinaryWidth7, BinaryHeight7, '7');
findWord(charArray, char8, imageHeight, imageWidth, BinaryWidth8, BinaryHeight8, '8');
findWord(charArray, char9, imageHeight, imageWidth, BinaryWidth9, BinaryHeight9, '9');
findWord(charArray, charA, imageHeight, imageWidth, BinaryWidthA, BinaryHeightA, 'a');
findWord(charArray, charB, imageHeight, imageWidth, BinaryWidthB, BinaryHeightB, 'b');
findWord(charArray, charC, imageHeight, imageWidth, BinaryWidthC, BinaryHeightC, 'c');
findWord(charArray, charD, imageHeight, imageWidth, BinaryWidthD, BinaryHeightD, 'd');
findWord(charArray, charE, imageHeight, imageWidth, BinaryWidthE, BinaryHeightE, 'e');
findWord(charArray, charF, imageHeight, imageWidth, BinaryWidthF, BinaryHeightF, 'f');
findWord(charArray, charP, imageHeight, imageWidth, BinaryWidthP, BinaryHeightP, 'p');
findWord(charArray, charY, imageHeight, imageWidth, BinaryWidthY, BinaryHeightY, 'y');
//------------------------------------END---------------------------------------------
richTextBoxLicense.Text += identifySort();
//执行identifySort方法,将我需要的格式在richTextBoxLicense文本框中显示
richTextBoxLicense.SelectionStart = richTextBoxLicense.TextL
//将光标移到最后面
3.&[图片] 单个字图片对应的二维矩阵0、1码.png&&&&
开源中国-程序员在线工具:
相关的代码(12)
12回/5980阅
27回/5131阅
3回/3997阅
1回/2525阅
0回/2285阅
0回/1913阅
4回/1782阅
0回/1595阅
1回/1202阅
10回/1127阅
iamge2text
大哥,有强迫症~~
2楼:bobo2cj 发表于
引用来自“杨大爷”的评论iamge2text
大哥,有强迫症~~哥们 你猜对了 --!
3楼:非知名隐退女尤 发表于
不错,这玩意很好用。先看一下楼主的原理。
4楼:scrystally 发表于
不错,这个用途在验证码识别上,不过好像最近的验证码识别难度都变高了。
5楼:bobo2cj 发表于
引用来自“scrystally”的评论不错,这个用途在验证码识别上,不过好像最近的验证码识别难度都变高了。
原先我想作成微OCR,还能作这个。
6楼:Jave.lin 发表于
使用局限性硬实比较大,如果字体,字号不一样,会否影响很大?
感觉楼主分享思路;
7楼:Jave.lin 发表于
现在的验证码,很多都有,杂点,或是,字体不一,字号不一,旋转。颜色,透明度,都不一样;
这就很复杂了。
8楼:bobo2cj 发表于
引用来自“Jave.lin”的评论使用局限性硬实比较大,如果字体,字号不一样,会否影响很大?
感觉楼主分享思路;
是的 局限性确实比较大 最近我在尝试将它做成一个字体识别工具(比如看到网页上的一个页面上用的字体很漂亮,但是不知道是什么字体,是&中宋&还是&苹果黑&?) 我的思路是:把“控制面板\所有控制面板项\字体”的ttf文件作为字体矩阵库(可以不断搜集ttf文件加到库中,这部分工作会比较大,但是这样的话不同字号的字体就没问题了,不过要是截图缩放的话估计会识别失败。),然后对页面截下一个字的图,放入识别工具中进行识别。
9楼:bobo2cj 发表于
引用来自“Jave.lin”的评论现在的验证码,很多都有,杂点,或是,字体不一,字号不一,旋转。颜色,透明度,都不一样;
这就很复杂了。
请问你有什么思路能解决图片缩放后不影响识别?
10楼:江奔 发表于
图像矩阵降维是否可以解决
11楼:Jave.lin 发表于
引用来自“bobo2cj”的评论引用来自“Jave.lin”的评论现在的验证码,很多都有,杂点,或是,字体不一,字号不一,旋转。颜色,透明度,都不一样;
这就很复杂了。
请问你有什么思路能解决图片缩放后不影响识别?这个恐怕没有哪个软件能写出缩放之后都可以识别的; 特别是那些不规则缩放(即:ScaleX与ScaleY不是等比缩放的,会更麻烦) 会涉及一些图形学的知识; 你可能要去,010101的验证矩形数据作缩放算法处理,而且,这肯定会失真; 缩放后,如果是矢量字体,他所真正对应的0101灰度数,特别是字的边沿值会很大可能不一样; 我也暂时想不到有更多的方法了; 如果有些网站的,验证码,是:带有,杂点,杂线,各种旋转角度,字号大小,字体,字体样式(粗体,斜体),那么这些验证码,几乎没多少个软件可以识别出来; 比较难;计算量N大;
12楼:bobo2cj 发表于
引用来自“Jave.lin”的评论引用来自“bobo2cj”的评论引用来自“Jave.lin”的评论现在的验证码,很多都有,杂点,或是,字体不一,字号不一,旋转。颜色,透明度,都不一样;
这就很复杂了。
请问你有什么思路能解决图片缩放后不影响识别?这个恐怕没有哪个软件能写出缩放之后都可以识别的; 特别是那些不规则缩放(即:ScaleX与ScaleY不是等比缩放的,会更麻烦) 会涉及一些图形学的知识; 你可能要去,010101的验证矩形数据作缩放算法处理,而且,这肯定会失真; 缩放后,如果是矢量字体,他所真正对应的0101灰度数,特别是字的边沿值会很大可能不一样; 我也暂时想不到有更多的方法了; 如果有些网站的,验证码,是:带有,杂点,杂线,各种旋转角度,字号大小,字体,字体样式(粗体,斜体),那么这些验证码,几乎没多少个软件可以识别出来; 比较难;计算量N大;厉害 受教了
13楼:liyanli2015nature 发表于
感谢分享阿...支持;现在Android项目上也要求识别图片中的数字了。。
开源从代码分享开始
bobo2cj的其它代码

我要回帖

更多关于 微信小程序图形验证码 的文章

 

随机推荐