python对验证码降噪的实现示例代码

yipeiwu_com6年前Python基础

前言:

最近写爬虫会经常遇到一些验证码识别的问题,现如今的验证码已经是五花八门,刚开始的验证码就是简单的对生成的验证码图片进行一些干扰,但是随着计算机视觉库的 发展壮大,可以轻松解决简单的验证码识别问题,于是一些变态 的验证码就出来了,什么滑动验证码,当然这个也是比较好解决的,用python的selenium库就可以破解一些滑动验证码。可是还出现了一些语音类,点击类的验证码。爬虫与反爬的较量确实越来越精彩了,也挺有趣的!最终促进的是整个行业技术的发展与进步。

在这里插入图片描述

今天分享一个可以解决简单验证码识别的代码。

图片:

在这里插入图片描述

图像灰度化处理

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()

效果:

在这里插入图片描述

图像二值化处理

t,gray2 = cv2.threshold(gray,220,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',gray2)

cv2.waitKey(0)

cv2.destroyAllWindows()

效果:

在这里插入图片描述

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()

过滤后的效果:

在这里插入图片描述

代码整合:

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实现邮件自动发送

本文实例为大家分享了python实现邮件自动发送的具体代码,供大家参考,具体内容如下 case 1:纯文本和HTML文件发送 # -*- coding: UTF-8 -*- im...

wxPython中文教程入门实例

wxPython中文教程入门实例 wx.Window 是一个基类,许多构件从它继承。包括 wx.Frame 构件。可以在所有的子类中使用 wx.Window 的方法。 wxPython的...

python的sorted用法详解

列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。 排序,数字、字符串按照ASCII,中文按照unicode从小到大排序...

Python实现对文件进行单词划分并去重排序操作示例

本文实例讲述了Python实现对文件进行单词划分并去重排序操作。分享给大家供大家参考,具体如下: 文件名:test1.txt 文件内容: But soft what light thr...

Python Flask前后端Ajax交互的方法示例

Python Flask前后端Ajax交互的方法示例

之前总结过flask里的基础知识,现在来总结下flask里的前后端数据交互的知识,这里用的是Ajax 一、 post方法 1、post方法的位置:在前端HTML里,绑定在一个按钮的点击...