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中operator模块的操作符使用示例总结
Jun 28 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
python读取文件名称生成list的方法
Apr 27 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
Python 项目转化为so文件实例
Dec 23 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
python如何导入依赖包
Jul 13 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
php流量统计功能的实现代码
2012/09/29 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
jupyter安装小结
2016/03/13 Python
python中模块的__all__属性详解
2017/10/26 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
如何利用python生成MD5并去重
2020/12/07 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
村党支部书记承诺书
2014/05/29 职场文书
大学同学会活动方案
2014/08/20 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
详解运行Python的神器Jupyter Notebook
2021/06/03 Python