热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python识图脚本_python实现验证码识别功能

本文实例为大家分享了python实现验证码识别的具体代码,供大家参考,具体内容如下1.通过二值化处理去掉干扰线2.对黑白图片进行降噪,

本文实例为大家分享了python实现验证码识别的具体代码,供大家参考,具体内容如下

1.通过二值化处理去掉干扰线

2.对黑白图片进行降噪,去掉那些单独的黑色像素点

3.消除边框上附着的黑色像素点

4.识别图像中的文字,去掉空格与'.'

python代码:from PIL import Image

from aip import AipOcr

file='1-1-7'

# 二值化处理,转化为黑白图片

def two_value():

for i in range(1, 5):

# 打开文件夹中的图片

image = Image.open(file+'.jpg')

# 灰度图

lim = image.convert('L')

# 灰度阈值设为165,低于这个值的点全部填白色

threshold = 165

table = []

for j in range(256):

if j

table.append(0)

else:

table.append(1)

bim = lim.point(table, '1')

bim.save(file+'.1.jpg')

two_value()

# 去除干扰线

im = Image.open(file+'.1.jpg')

# 图像二值化

data = im.getdata()

w, h = im.size

black_point = 0

for x in range(1, w - 1):

for y in range(1, h - 1):

mid_pixel = data[w * y + x] # 像素点像素值

if mid_pixel <50: # 找出上下左右四个方向像素点像素值

top_pixel &#61; data[w * (y - 1) &#43; x]

left_pixel &#61; data[w * y &#43; (x - 1)]

down_pixel &#61; data[w * (y &#43; 1) &#43; x]

right_pixel &#61; data[w * y &#43; (x &#43; 1)]

# 判断上下左右的黑色像素点总个数

if top_pixel <5: #小于5比小于10更精确

black_point &#43;&#61; 1

if left_pixel <5:

black_point &#43;&#61; 1

if down_pixel <5:

black_point &#43;&#61; 1

if right_pixel <5:

black_point &#43;&#61; 1

if black_point <1:

im.putpixel((x, y), 255)

# print(black_point)

black_point &#61; 0

im.save(file&#43;&#39;.2.jpg&#39;)

# 去除干扰线

im &#61; Image.open(file&#43;&#39;.2.jpg&#39;)

# 图像二值化

data &#61; im.getdata()

w, h &#61; im.size

black_point &#61; 0

for x in range(1, w - 1):

for y in range(1, h - 1):

if x <2 or y <2:

im.putpixel((x - 1, y - 1), 255)

if x > w - 3 or y > h - 3:

im.putpixel((x &#43; 1, y &#43; 1), 255)

im.save(file&#43;&#39;.3.jpg&#39;)

# 定义常量

APP_ID &#61; &#39;11352343&#39;

API_KEY &#61; &#39;Nd5Z1NkGoLDvHwBnD2bFLpCE&#39;

SECRET_KEY &#61; &#39;A9FsnnPj1Ys2Gof70SNgYo23hKOIK8Os&#39;

# 初始化AipFace对象

aipOcr &#61; AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片

filePath&#61;file&#43;&#39;.3.jpg&#39;

def get_file_content(filePath):

with open(filePath, &#39;rb&#39;) as fp:

return fp.read()

# 定义参数变量

options &#61; {

&#39;detect_direction&#39;: &#39;true&#39;,

&#39;language_type&#39;: &#39;CHN_ENG&#39;,

}

# 调用通用文字识别接口

result &#61; aipOcr.basicGeneral(get_file_content(filePath), options)

print(result)

words_result&#61;result[&#39;words_result&#39;]

for i in range(len(words_result)):

print(words_result[i][&#39;words&#39;].replace(&#39; &#39;,&#39;&#39;).replace(&#39;.&#39;,&#39;&#39;)) #去掉可能被识别的空格与.

loading.gif

以上就是本文的全部内容&#xff0c;希望对大家的学习有所帮助&#xff0c;也希望大家多多支持爱安网。



推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
WSSDRED_935
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有