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 Web框架Tornado运行和部署
Oct 19 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
使用Python实现一个栈判断括号是否平衡
Aug 23 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python猴子补丁知识点总结
Jan 05 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
如何在django中实现分页功能
Apr 22 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
Python实现查找数据库最接近的数据
Jun 08 Python
python之pygame模块实现飞机大战完整代码
Nov 29 Python
python复合条件下的字典排序
Dec 18 Python
Python字符串格式化方式
Apr 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
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php安装swoole扩展的方法
2015/03/19 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
如何基于线程池提升request模块效率
2020/04/18 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
使用HTML5的Notification API制作web通知的教程
2015/05/08 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
会计实习生自我鉴定
2013/12/12 职场文书
给老师的一封建议书
2014/03/13 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
利用Python多线程实现图片下载器
2022/03/25 Python