qq_34978644 2021-09-08 18:04 采纳率: 0%
浏览 86

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

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

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

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

以下为代码

from PIL import Image
import numpy as np
from aip import AipOcr
import re,requests


APP_ID=''     #这部分隐藏了
API_KEY=''
SECRET_KEY=''
client = AipOcr(APP_ID,API_KEY,SECRET_KEY)

def get_neighbor(W, H, WIDTH, HEIGH):
    neighbor = []
    for w in range(W - 1, W + 2):
        for h in range(H - 1, H + 2):
            # 边界判断
            if (w >= 0 and w < WIDTH and h >= 0 and h < HEIGH):
                neighbor.append((w, h))
            else:
                continue
    return neighbor

im = Image.open('C:/Users/1/Desktop/2.png').convert('L')
W,H=im.size
im =im.point((lambda x:255 if x >180 else 0), '1')
im.show()
neighbor = None
for w in range(W):
    for h in range(H):
        if (im.getpixel((w, h)) == 0):
            neighbor = get_neighbor(w, h, W, H)
            pixel = []
            for nei in neighbor:
                pixel.append(im.getpixel(nei))
                num_0 = pixel.count(0)
            if (num_0 / 8) > 0.25:     
                im.putpixel((w, h), 0)
            else:
                im.putpixel((w, h), 255)

im.show()

im.save('C:/Users/1/Desktop/3.png')
with open(r"C:/Users/1/Desktop/3.png","rb") as f:
    imag=f.read()
data=client.basicAccurate(imag)
data=str(data) 
print(data)
numregex = re.compile(r"{'words': '(.*)'}")
mo = numregex.search(data)
print(mo.group(1))

img


img

  • 写回答

2条回答 默认 最新

  • Pliosauroidea 2021-09-08 18:05
    关注

    不会图像处理
    直觉上是不是可以通过颜色范围分一个k-means然后对每个颜色单独识别组合

    评论

报告相同问题?

问题事件

  • 创建了问题 9月8日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献