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,掩码和广播地址实例代码
Jan 22 Python
python spyder中读取txt为图片的方法
Apr 27 Python
Django 跨域请求处理的示例代码
May 02 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
pip指定python位置安装软件包的方法
Jul 12 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 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
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
python获取一组汉字拼音首字母的方法
2015/07/01 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
美国羊皮公司:Overland
2018/01/15 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
战友聚会邀请函
2014/01/18 职场文书
核心价值观演讲稿
2014/05/13 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
法务专员岗位职责
2015/02/14 职场文书
计划生育工作总结2015
2015/04/03 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js
mysql sock 文件解析及作用讲解
2022/07/15 MySQL