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切片用法实例教程
Sep 08 Python
Python实现简单状态框架的方法
Mar 19 Python
python插入数据到列表的方法
Apr 30 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
python2.7实现FTP文件下载功能
Apr 15 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
python实现电子产品商店
Feb 26 Python
python全栈知识点总结
Jul 01 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
基于django 的orm中非主键自增的实现方式
May 18 Python
简单了解Python多态与属性运行原理
Jun 15 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中curl_setopt函数用法实例分析
2015/04/16 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python中的推导式使用详解
2015/06/03 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Django自定义用户认证示例详解
2018/03/14 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
python interpolate插值实例
2020/07/06 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
高一学生评语大全
2014/04/25 职场文书
初二学习计划书范文
2014/04/27 职场文书
教师师德考核自我评价
2014/09/13 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
六查六看心得体会
2014/10/14 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python