51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2873|回复: 3
打印 上一主题 下一主题

python 验证码去除粗的干扰曲线

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:47
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2021-9-9 14:33:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点

    图1需要处理的验证码,里面包含细小圆圈噪点,和字母相差不多的曲线
    灰度化,二值化处理之后得到图2

    百度的OCR接口调用识别还是错误

    接下来可以如何处理粗曲线呢?或者突出让验证码的边界更明显?

    以下为代码

    1. from PIL import Image
    2. import numpy as np
    3. from aip import AipOcr
    4. import re,requests

    5. APP_ID=''     #这部分隐藏了
    6. API_KEY=''
    7. SECRET_KEY=''
    8. client = AipOcr(APP_ID,API_KEY,SECRET_KEY)
    9. def get_neighbor(W, H, WIDTH, HEIGH):
    10.     neighbor = []
    11.     for w in range(W - 1, W + 2):
    12.         for h in range(H - 1, H + 2):
    13.             # 边界判断
    14.             if (w >= 0 and w < WIDTH and h >= 0 and h < HEIGH):
    15.                 neighbor.append((w, h))
    16.             else:
    17.                 continue
    18.     return neighbor
    19. im = Image.open('C:/Users/1/Desktop/2.png').convert('L')
    20. W,H=im.size
    21. im =im.point((lambda x:255 if x >180 else 0), '1')
    22. im.show()
    23. neighbor = None
    24. for w in range(W):
    25.     for h in range(H):
    26.         if (im.getpixel((w, h)) == 0):
    27.             neighbor = get_neighbor(w, h, W, H)
    28.             pixel = []
    29.             for nei in neighbor:
    30.                 pixel.append(im.getpixel(nei))
    31.                 num_0 = pixel.count(0)
    32.             if (num_0 / 8) > 0.25:     
    33.                 im.putpixel((w, h), 0)
    34.             else:
    35.                 im.putpixel((w, h), 255)
    36. im.show()
    37. im.save('C:/Users/1/Desktop/3.png')
    38. with open(r"C:/Users/1/Desktop/3.png","rb") as f:
    39.     imag=f.read()
    40. data=client.basicAccurate(imag)
    41. data=str(data)
    42. print(data)
    43. numregex = re.compile(r"{'words': '(.*)'}")
    44. mo = numregex.search(data)
    45. print(mo.group(1))
    复制代码


    附件: 您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 1803 天

    连续签到: 2 天

    [LV.Master]测试大本营

    2#
    发表于 2021-9-10 09:52:56 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 1518 天

    连续签到: 2 天

    [LV.Master]测试大本营

    3#
    发表于 2021-9-10 10:46:29 | 只看该作者
    试试图像比较分析
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    7 小时前
  • 签到天数: 2814 天

    连续签到: 2 天

    [LV.Master]测试大本营

    4#
    发表于 2021-9-10 16:54:57 | 只看该作者
    建议使用第三方的库
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 14:38 , Processed in 0.067201 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表