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基础教程之获取本机ip数据包示例
Feb 10 Python
pycharm 使用心得(四)显示行号
Jun 05 Python
跟老齐学Python之模块的加载
Oct 24 Python
python 的列表遍历删除实现代码
Apr 12 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
Python list运算操作代码实例解析
Jan 20 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python pymsql模块的使用
Sep 07 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
打造计数器DIY三步曲(下)
2006/10/09 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
jQuery select控制插件
2009/08/17 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
Python中的浮点数原理与运算分析
2017/10/12 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
python3实现点餐系统
2019/01/24 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
感恩节活动方案
2014/01/27 职场文书
四风自我剖析材料
2014/09/30 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
运动会口号霸气押韵
2015/12/24 职场文书