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 相关文章推荐
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
Python中的ctime()方法使用教程
May 22 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
python 调整图片亮度的示例
Dec 03 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
python中的getter与setter你了解吗
Mar 24 Python
Python中的socket网络模块介绍
Jul 23 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
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
python Kmeans算法原理深入解析
2019/08/23 Python
Django 限制访问频率的思路详解
2019/12/24 Python
用python对excel查重
2020/12/07 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
学习之星事迹材料
2014/05/17 职场文书
学校四群教育实施方案
2014/06/12 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
Python类方法总结讲解
2021/07/26 Python