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计算一个文件里字数的方法
Jun 15 Python
浅析Python编写函数装饰器
Mar 18 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
pandas如何处理缺失值
Jul 31 Python
python每天定时运行某程序代码
Aug 16 Python
python判断是空的实例分享
Jul 06 Python
Python实现封装打包自己写的代码,被python import
Jul 12 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
总结几个非常实用的Python库
Jun 26 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基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP中16个高危函数整理
2019/09/19 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
Python 正则表达式实现计算器功能
2017/04/29 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
pycharm的python_stubs问题
2020/04/08 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
竞争与合作演讲稿
2014/05/12 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
好员工观后感
2015/06/17 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python