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

 更新时间:2019年11月12日 16:19:24   作者:lemon *  
这篇文章主要介绍了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • pycharm快捷键自动提示documentation问题(auto Ctrl+Q)

    pycharm快捷键自动提示documentation问题(auto Ctrl+Q)

    这篇文章主要介绍了pycharm快捷键自动提示documentation问题(auto Ctrl+Q),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 使用python实现ftp的文件读写方法

    使用python实现ftp的文件读写方法

    今天小编就为大家分享一篇使用python实现ftp的文件读写方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • TensorFlow打印输出tensor的值

    TensorFlow打印输出tensor的值

    这篇文章主要介绍了TensorFlow打印输出tensor的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python机器学习应用之朴素贝叶斯篇

    Python机器学习应用之朴素贝叶斯篇

    朴素贝叶斯模型是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。因为运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案
    2022-01-01
  • 解析Python中的异常处理

    解析Python中的异常处理

    这篇文章主要介绍了解析Python中的异常处理,异常处理是学习每门编程语言都必须掌握的重要知识,本文代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Python全栈之基本数据类型

    Python全栈之基本数据类型

    这篇文章主要为大家介绍了Python基本数据类型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python利用逻辑回归模型解决MNIST手写数字识别问题详解

    Python利用逻辑回归模型解决MNIST手写数字识别问题详解

    这篇文章主要介绍了Python利用逻辑回归模型解决MNIST手写数字识别问题,结合实例形式详细分析了Python MNIST手写识别问题原理及逻辑回归模型解决MNIST手写识别问题相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • 详解Python中的测试工具

    详解Python中的测试工具

    本文介绍了两个Python中的测试工具: doctest和unittest,并配以简单的例子来说明这两个测试模块的使用方法,需要的朋友可以参考下
    2019-06-06
  • python替换文件中的某几行操作技巧

    python替换文件中的某几行操作技巧

    这篇文章主要介绍了python替换文件中的某几行,本文介绍使用python正则库打开文件并替换文件中某几行数据的可行方法,需要的朋友可以参考下
    2023-09-09
  • 详解Python中的条件判断语句

    详解Python中的条件判断语句

    这篇文章主要介绍了Python中的条件判断语句,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05

最新评论