python对验证码降噪的实现示例代码


Posted in Python onNovember 12, 2019

前言:

最近写爬虫会经常遇到一些验证码识别的问题,现如今的验证码已经是五花八门,刚开始的验证码就是简单的对生成的验证码图片进行一些干扰,但是随着计算机视觉库的 发展壮大,可以轻松解决简单的验证码识别问题,于是一些变态 的验证码就出来了,什么滑动验证码,当然这个也是比较好解决的,用python的selenium库就可以破解一些滑动验证码。可是还出现了一些语音类,点击类的验证码。爬虫与反爬的较量确实越来越精彩了,也挺有趣的!最终促进的是整个行业技术的发展与进步。

python对验证码降噪的实现示例代码

今天分享一个可以解决简单验证码识别的代码。

图片:

python对验证码降噪的实现示例代码

图像灰度化处理

import cv2 
import numpy as np
img = cv2.imread('./picture/1.jpg')

#将图片灰度化处理,降维,加权进行灰度化c
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('min_gray',gray)

cv2.waitKey(0)

cv2.destroyAllWindows()

效果:

python对验证码降噪的实现示例代码

图像二值化处理

t,gray2 = cv2.threshold(gray,220,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',gray2)

cv2.waitKey(0)

cv2.destroyAllWindows()

效果:

python对验证码降噪的实现示例代码

8领域过滤

def remove_noise(img,k=4):
  
  img2 = img.copy()
  
#   img处理数据,k过滤条件
  w,h = img2.shape
  def get_neighbors(img3,r,c):
    count = 0
    for i in [r-1,r,r+1]:
      for j in [c-1,c,c+1]:
        if img3[i,j] > 10:#纯白色
          count+=1
    return count
#   两层for循环判断所有的点
  for x in range(w):
    for y in range(h):
      if x == 0 or y == 0 or x == w -1 or y == h -1:
        img2[x,y] = 255
      else:
        n = get_neighbors(img2,x,y)#获取邻居数量,纯白色的邻居
        if n > k:
          img2[x,y] = 255
  return img2
result = remove_noise(gray2)
cv2.imshow('8neighbors',result)

cv2.waitKey(0)

cv2.destroyAllWindows()

过滤后的效果:

python对验证码降噪的实现示例代码

代码整合:

import cv2 
import numpy as np
img = cv2.imread('./picture/1.jpg')

#将图片灰度化处理,降维,加权进行灰度化c
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
t,gray2 = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',gray2)
result = remove_noise(gray2)
cv2.imshow('8neighbors',result)

cv2.waitKey(0)

cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
pandas object格式转float64格式的方法
Apr 10 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
FFrpc python客户端lib使用解析
Aug 24 Python
pycharm运行scrapy过程图解
Nov 22 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
执行Python程序时模块报错问题
Mar 26 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
Python如何发送与接收大型数组
Aug 07 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
python获取对象信息的实例详解
Jul 07 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 #Python
详解在python操作数据库中游标的使用方法
Nov 12 #Python
如何分离django中的媒体、静态文件和网页
Nov 12 #Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 #Python
Python实现元素等待代码实例
Nov 11 #Python
如何基于python生成list的所有的子集
Nov 11 #Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
You might like
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
BBS(php & mysql)完整版(六)
2006/10/09 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
js闭包用法实例详解
2016/12/13 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
一封普通求职者的求职信
2013/11/20 职场文书
草船借箭教学反思
2014/02/03 职场文书
捐资助学倡议书
2014/04/15 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
项目战略合作意向书
2015/05/08 职场文书
关于幸福的感言
2015/08/03 职场文书
工作建议书范文
2019/07/08 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android