目录

1. 前言

2.样例

3. 灰度化

1).简单原理:

2).导包:

3).三种灰度化方法:

4).显示与写入:

5).效果图:

4. 二值化

5.  降噪

1).cv2中的morphologyEx方法

2).使用侵蚀与膨胀形态学去噪

6.识别

1)muggle_ocr识别:

2) 百度识别:


1. 前言

验证码对于做采集的人来说是个烦人的小家伙!当然有很多打码平台,可以轻松解决!但可以自己来,干嘛靠别人!有技术不学是傻儿童!今天主要讲来用 opencv 解决验证码!

2.样例

这人眼看起都有点变扭,乱七八糟,干扰元素太多了!

3. 灰度化

1).简单原理:

本身三原色为RGB,但opencv里是使用的BGR,在BGR值相同时为灰色。大概就是,将三通道的图片变为单通道就可以称为灰度化处理。

2).导包:

包名:opencv-python与numpy

import cv2
import numpy as np

3).三种灰度化方法:

# 方法一  直接在读取图片的时候灰度化
yzm = cv2.imread('1.png',cv2.IMREAD_GRAYSCALE)# 方法二 在读入图片后再进行灰度化
yzm = cv2.imread('1.png')
yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)# 方法三  使用numpy取值进行灰度化
# max:取最大值 较亮      min:取最小值  较黑      mean:取平均值
yzm = cv2.imread('1.png')
yzm = np.min(yzm,axis=2).astype(np.uint8)   

4).显示与写入:

# 保存灰度化的图片
cv2.imwrite('new_img.png',yzm)# 显示灰度化的图片  windows1是窗口名称
cv2.imshow('windows1',yzm)# waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发,0表示任意按键
cv2.waitKey(0)# 销毁特定的窗口
cv2.destroyWindow('windows1')

5).效果图:

4. 二值化

简单说:将图片变成黑白(0和255)叫做二值化处理,调用openCv里的threshold方法。

注意:阈值可以调整

import cv2yzm = cv2.imread('1.png')  # 读图片
yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)   # cv2 方法灰度化# 二值化
thresh,yzm = cv2.threshold(yzm,160,255,cv2.THRESH_BINARY)
# yzm:表示需要操作的数组
# 160:表示阈值
# 255 表示最大值cv2.imshow('window1',yzm)
cv2.waitKey(0)
cv2.destroyWindow('window1')

效果图:

5.  降噪

降噪方法有三:1.八邻域降噪

2.使用侵蚀与膨胀形态学去噪

3.cv2 中的 morphologyEx 方法

八邻域不讲,本篇主要是简单易懂!用新人上手

1).cv2中的morphologyEx方法

import cv2
import numpy as npyzm = cv2.imread('1.png')
yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)   # cv2 方法灰度化
thresh,yzm = cv2.threshold(yzm,170,255,cv2.THRESH_BINARY)  # cv2二值化# 降噪
yzm = cv2.morphologyEx(yzm,cv2.MORPH_CLOSE,np.ones(shape=(6,6)))cv2.imwrite('2.png',yzm) # 写入
cv2.imshow('window1',yzm)
cv2.waitKey(0)
cv2.destroyWindow('window1')

效果图:

2).使用侵蚀与膨胀形态学去噪

import cv2
import numpy as npyzm = cv2.imread('1.png')
yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)   # cv2 方法灰度化
thresh,yzm = cv2.threshold(yzm,170,255,cv2.THRESH_BINARY)  # cv2二值化# 先膨胀 让黑色遭点消失,再侵蚀让黑色加粗
dilate = cv2.dilate(yzm,np.ones(shape=(6,6)))
yzm = cv2.erode(dilate,np.ones(shape=(5,5)))cv2.imwrite('2.png',yzm) # 写入
cv2.imshow('window1',yzm)
cv2.waitKey(0)
cv2.destroyWindow('window1')

效果图:

6.识别

可以使用:1.muggle_ocr识别

2.调用百度识别   (两者都是免费识别)

1)muggle_ocr识别:

# muggle_ocr识别import muggle_ocrsdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
img = open('2.png','rb').read()
text = sdk.predict(image_bytes=img)
print(text)

2) 百度识别:

from aip import AipOcrAPP_ID = ''
API_KEY = ''
SECRET_KEY = ''client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
img = open('2.png','rb').read()
result = client.basicGeneral(img)
print(result)

效果图:

python 简单易懂的验证码识别相关推荐

  1. 基于Python的验证码识别技术

    基于Python的验证码识别技术 作者:强哥 概述 前言 准备工作 识别原理 图像处理 切割图像 人工标注 训练数据 检测结果 搞笑一刻 福利一刻 推荐阅读 前言 很多网站登录都需要输入验证码,如果要 ...

  2. 关于利用python进行验证码识别的一些想法

    关于利用python进行验证码识别的一些想法 - 小五义 - 博客园 关于利用python进行验证码识别的一些想法 转载请注明:@小五义http://www.cnblogs.com/xiaowuyi ...

  3. python 实现验证码识别

    python 实现验证码识别 环境安装 1.1 python安装(此处不详细介绍,自行百度) 1.2 安装Tesseract-OCR 第一步:依赖安装 第二步:下载安装Leptonica 第三步: 下 ...

  4. 基于python的验证码识别

    基于python的验证码识别 在利用python对一些网站进行批量操作的时候,验证码是个绕不过去的东西,虽然现在网上有很多图像识别的api,但是可能不适用于你的项目,我为了批量爬取班上同学的学分绩点写 ...

  5. 毕业设计 - 题目:基于python的验证码识别 - 机器视觉 验证码识别

    文章目录 0 前言 1 项目简介 2 验证码识别步骤 2.1 灰度处理&二值化 2.2 去除边框 2.3 图像降噪 2.4 字符切割 2.5 识别 3 基于tensorflow的验证码识别 3 ...

  6. 5行Python实现验证码识别,太稳了

    很久之前,分享过一次Python代码实现验证码识别的办法. 当时采用的是pillow+pytesseract,优点是免费,较为易用.但其识别精度一般,若想要更高要求的验证码识别,初学者就只能去选择使用 ...

  7. python图像验证码识别_python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  8. 6行Python实现验证码识别,太稳了!

    之前有个爬虫需求,但每次请求都需要进行验证码识别,故需要ocr识别,推荐一个Python免费的验证码识别-ddddocr(谐音带带弟弟OCR) 安装 pip install ddddocr -i ht ...

  9. 5行Python实现验证码识别,太稳了!

    在很久之前,分享过一次Python代码实现验证码识别的办法. 当时采用的是pillow+pytesseract,优点是免费,较为易用.但其识别精度一般,若想要更高要求的验证码识别,初学者就只能去选择使 ...

  10. python验证码 识别代码不准_谈谈Python进行验证码识别的一些想法

    用python加"验证码"为关键词在baidu里搜一下,可以找到很多关于验证码识别的文章.我大体看了一下,主要方法有几类:一类是通过对图片进行处理,然后利用字库特征匹配的方法,一类 ...

最新文章

  1. 【iCore2双核心板】SRAM 读写实验(基于Verilog语言)
  2. python特征选择工具_一个Python特征选择工具,助力实现高效机器学习
  3. 苹果wifi网速慢怎么办_所以,WiFi和4G到底哪个更耗电?
  4. resize 按钮不会被伪元素遮盖
  5. 前端学习(2469):echart复习电商管理通过erchart加载数据
  6. 基础练习 高精度加法(蓝桥杯 java)
  7. 【转】Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示
  8. AifbdScore智能AI曲谱乐谱播放识别SDK midi曲谱 应用开发 五线谱 六线谱 四线谱播放
  9. Java学习路线图(2022最新版)你真的只需要看这一篇
  10. eclipse SVN javaHL not available 问题解决
  11. c4d流体插件_C4D流体烟雾模拟插件TurbulenceFD C4D v1.0.1437中文版流体
  12. 程序员10个必须有的Android应用程序
  13. Elgamal数字签名原理
  14. 营业执照遗失该如何处理
  15. 如何做好会员管理与维护?
  16. 15【存储过程和存储函数】
  17. 阿龙的学习笔记--- Docker 的一些概念总结
  18. CString和LPVOID的转换(线程参数传递) .
  19. oracle CLOB与BLOB的区别及使用
  20. 202106C语言二级真题

热门文章

  1. LLC谐振变换器原理及变频控制
  2. 重新定义“车规级”激光雷达
  3. 如何在“一周内”摸清一个行业
  4. Facebook和Ins即将推出NFT项目?Meta的元宇宙计划实现ing
  5. 习惯的力量在于不由主——知道顶个球用,成为习惯才是你的
  6. trouble processing xxxx.class: Ill-advised or mistaken usage of a core class (java.* or javax.*)
  7. 漫画:大公司病了,这也太形象了吧!!!
  8. 【学习摘记】马士兵HTML CSS_课时4-5_表格和表单
  9. perl中CPAN的安装
  10. markdown文件怎么转换成html,将markdown文件转换为html文件(MarkdownPad)