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在多玩图片上下载妹子图的实现代码
Aug 13 Python
Python算法之栈(stack)的实现
Aug 18 Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Python占用的内存优化教程
Jul 28 Python
对于Python深浅拷贝的理解
Jul 29 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
python批量创建变量并赋值操作
Jun 03 Python
Python实现视频中添加音频工具详解
Dec 06 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制作新闻系统的思路
2006/10/09 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
C语言笔试题回忆
2015/04/02 面试题
征婚广告词
2014/03/17 职场文书
企业领导对照检查材料
2014/08/20 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
趣味运动会标语口号
2015/12/26 职场文书
导游词之西递宏村
2019/12/10 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android