最新公告
  • 欢迎您光临小酒资源吧,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • [Python] 某果验证码识别去干扰线 去噪点 字符分割算法

    [Python] 某果验证码识别去干扰线 去噪点 字符分割算法 最后编辑:2020-09-01
    增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

    于2020/7/1-3日编写,仅供个人学习参考,请勿用于非法途径。

    验证码识别干扰线 去噪点
    字符分割算法用了垂直投影取中间前后4点比较进行分割
    [Python] 纯文本查看 复制代码# 需要用到的库
    from itertools import groupby
    from PIL import Image
    import time
    import requests
    import re

    首先下载验证码图片:
    [Python] 纯文本查看 复制代码def down_img(i):
    # code地址
    codeurl = \’https://nuc.api.mgtv.com/v1/LoginCaptcha?\’
    # code参数
    codedata = {
    \’_support\’:\’10000000\’,
    \’deviceid\’:\’1e92894d-daac-497d-b4d9-25d41da0568e\’,
    \’appVersion\’:\’pcweb-6.3.0.gray\’,
    \’dname\’:\’\’,
    \’src\’:\’intelmgtv\’,
    \’invoker\’:\’pcweb\’,
    \’username\’:\’@账号\’,
    \’smscode\’:\’86\’,
    \’t\’:\’@时间戳\’,
    }
    t = int(round(time.time() * 1000))
    codedata[\’username\’] = \’这里随便输个账号\’
    codedata[\’t\’] = t
    coderes = requests.get(codeurl,params=codedata)
    with open(str(i)+\’.png\’, \’wb\’) as file:
    file.write(coderes.content)
    file.close

    微信截图_20200709223233.png

    微信截图_20200709231040.png

    这里用画图工具(去色工具)获取,也可以用其它图色处理工具
    处理验证码图片:
    观察验证码可以发现,干扰线为 FF0000 的红色
    直接遍历图片像素把红色的点转换为白色,其它转为黑色
    然后对字体进行一些小修补和去除杂点
    [Python] 纯文本查看 复制代码def change_img(img,i):
    pixels = img.load()
    for k in range(img.size[0]):
    for j in range(img.size[1]):
    if pixels[k,j] == (255, 0, 0):
    pixels[k,j] = (255, 255, 255)
    elif pixels[k,j] != (255, 255, 255):
    pixels[k,j] = (0, 0, 0)
    for k in range(1,img.size[0]-1):
    for j in range(1,img.size[1]-1):
    x1 = pixels[k-1,j]
    x2 = pixels[k+1,j]
    y1 = pixels[k,j-1]
    y2 = pixels[k,j+1]
    if pixels[k,j] == (255, 255, 255):
    if x1 == x2 == y1 == y2 == (0, 0, 0):
    pixels[k,j] = (0, 0, 0)
    elif x1 == y1 == y2 == (0, 0, 0):
    pixels[k,j] = (0, 0, 0)
    elif x2 == y1 == y2 == (0, 0, 0):
    pixels[k,j] = (0, 0, 0)
    if pixels[k,j] == (0, 0, 0):
    if x1 == x2 == y1 == y2 == (255, 255, 255):
    pixels[k,j] = (255, 255, 255)
    elif x1 == x2 == y1 == (255, 255, 255):
    pixels[k,j] = (255, 255, 255)
    elif x1 == x2 == y2 == (255, 255, 255):
    pixels[k,j] = (255, 255, 255)
    elif x1 == y1 == y2 == (255, 255, 255):
    pixels[k,j] = (255, 255, 255)
    elif x2 == y1 == y2 == (255, 255, 255):
    pixels[k,j] = (255, 255, 255)
    img.save(str(i)+\’_new.png\’)

    微信截图_20200709223234.png

    对验证码进行分割处理:
    先对验证码进行简单处理边缘白色无用像素,便于后面切割
    [Python] 纯文本查看 复制代码def cut_LR(img):
    pixels = img.load()
    x,y = img.size
    for w in range(x):
    for h in range(y):
    if pixels[w,h] == 0:
    x1 = w
    break
    if pixels[w,h] == 0:
    break
    for w in range(x):
    w = x – w – 1
    for h in range(y):
    if pixels[w,h] == 0:
    x2 = w + 1
    break
    if pixels[w,h] == 0:
    break
    for h in range(y):
    for w in range(x1,x2):
    if pixels[w,h] == 0:
    y1 = h
    break
    if pixels[w,h] == 0:
    break
    for h in range(y):
    h = y – h – 1
    for w in range(x1,x2):
    if pixels[w,h] == 0:
    y2 = h + 1
    break
    if pixels[w,h] == 0:
    break
    return x1,y1,x2,y2

    微信截图_20200709224308.png

    传入处理后的图片进行垂直投影
    [Python] 纯文本查看 复制代码def vertical(img):
    pixdata = img.load()
    w,h = img.size
    result = []
    for x in range(w):
    black = 0
    for y in range(h):
    if pixdata[x,y] == 0:
    black += 1
    result.append(black)
    return result

    对垂直投影结果进行处理,取投影结果中间前后取4个值对比,
    在其中取最小值第一次进行分割(变成2+2的两个验证码)
    然后再对其二次分割成(1+1+1+1)的验证码
    [Python] 纯文本查看 复制代码def get_start_x(hist_width):
    mid = len(hist_width) // 2
    temp = hist_width[mid-4:mid+5]
    return mid – 4 + temp.index(min(temp))
    def get_split(img,hist_width):
    w,h = img.size
    box1 = (0,0,hist_width,h)
    box2 = (hist_width,0,w,h)
    img_1 = img.crop(box1)
    img_chuizhi = vertical(img_1)
    split_x1 = get_start_x(img_chuizhi)
    w1,h1 = img_1.size
    box_1 = (0,0,split_x1,h1)
    box_2 = (split_x1,0,w1,h1)
    img_1.crop(box_1).save(\’x_1.png\’)
    img_1.crop(box_2).save(\’x_2.png\’)
    img_2 = img.crop(box2)
    img_chuizhi = vertical(img_2)
    split_x2 = get_start_x(img_chuizhi)
    w2,h2 = img_2.size
    box_3 = (0,0,split_x2,h2)
    box_4 = (split_x2,0,w2,h2)
    img_2.crop(box_3).save(\’x_3.png\’)
    img_2.crop(box_4).save(\’x_4.png\’)

    最终处理结果:

    11111.png

    222222.png

    33333.png

    分割效果还是很不错的,少许粘连,少许倾斜用这种垂直投影的切割方法处理出来的效果已经可以达到不错的效果,可完美分割99%。为后续训练节省不少时间。
    代码比较乱,因为这是初稿(主要是刚学py没多久,之前都是用易语言比较多,规范的问题就一略而过了,哈哈),写的没那么规范。
    如果有看不懂的可以留言。

    这种验证码比较简单,粘连倾斜的比较少,所以比较简单。如果是倾斜比较厉害的可以用水滴算法进行分割。

    吾爱论坛ID:lennydada
    如果觉得对你有帮助请给个评分哦,每日评分都是免费的

    猜你在找

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!603313839@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!

    小酒资源吧 » [Python] 某果验证码识别去干扰线 去噪点 字符分割算法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    免责声明/技术服务/售后服务等
    本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!603313839@qq.com
    • 2020-09-01Hi,初次和大家见面了,请多关照!

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过500元的程序/模板免费一次安装,需提你供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、火车头规则、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-22:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 603313839@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款程序/模板/下载/有疑问,可以跟我联系哦!

    联系作者
    • 3163会员总数(位)
    • 4504资源总数(个)
    • 4本周发布(个)
    • 0 今日发布(个)
    • 407稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
  • 2020 XiaoJiu8.cn - & WordPress Theme. All rights reserved 黔ICP备17003460号-5

  • XML地图 | 站长导航
         
    升级SVIP尊享更多特权立即升级