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用字典统计单词或汉字词个数示例
Apr 22 Python
python中的列表推导浅析
Apr 26 Python
python私有属性和方法实例分析
Jan 15 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
用Python解决x的n次方问题
Feb 08 Python
更新修改后的Python模块方法
Mar 03 Python
如何给Python代码进行加密
Jan 10 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
python3实现无权最短路径的方法
May 12 Python
浅谈pytorch中的dropout的概率p
May 27 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
SONY SRF-40W电路分析
2021/03/02 无线电
php支持断点续传、分块下载的类
2016/05/02 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
python opencv读mp4视频的实例
2018/12/07 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
Europcar比利时:租车
2019/08/26 全球购物
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
大四学年自我鉴定
2013/11/13 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
银行求职信怎么写
2014/05/26 职场文书
有关环保的标语
2014/06/13 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
详解Redis主从复制实践
2021/05/19 Redis