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提取html文件中的特定数据的实现代码
Mar 24 Python
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
Python中使用摄像头实现简单的延时摄影技术
Mar 27 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
Django学习笔记之为Model添加Action
Apr 30 Python
利用Python实现kNN算法的代码
Aug 16 Python
django中间键重定向实例方法
Nov 10 Python
Python类反射机制使用实例解析
Dec 30 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
Jun 18 Python
浅谈Python描述数据结构之KMP篇
Sep 06 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
简单了解什么是神经网络
2017/12/23 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python保存文件方法小结
2018/07/27 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python读取ini配置文件过程示范
2019/12/23 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
通过代码实例了解Python sys模块
2020/09/14 Python
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
连带责任保证书
2014/04/29 职场文书
质量安全标语
2014/06/07 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js