Python使用Cv2模块识别验证码
目录
业务需求
需求分析
代码一
结果分析
代码二
代码模块
结果分析
总结经验
参考文献
业务需求
识别验证码图片中的数字信息,用python的图形表示出来了
需求分析
使用Cv2模块、pytesseract模块进行操作。CV2是计算机建模识别的库,用来给图像进行灰度处理,降噪处理,形态学分析。pytesseract模块将智能识别图片字体数字,用于打印出来。
代码一
# -*- conding:utf-8 -*-
#二维码识别,呈现不同效果。
#导入计算机学习开源数据库
import cv2 as cv
#导入计算机识别模块
import pytesseract
#导入图像模块,形成图像
from PIL import Image
#定义函数,导入图像
def recognize_text(image):#边缘保留滤波,去除噪dst = cv.pyrMeanShiftFiltering(image,sp=10,sr=150)#灰度图像gray = cv.cvtColor(dst,cv.COLOR_BGR2GRAY)#图像二值化ret,binary = cv.threshold(gray,0,225,cv.THRESH_BINARY_INV | cv.THRESH_OTSU)#形态学操作 ,腐蚀,膨胀erode = cv.erode(binary,None,iterations=2)dilate = cv.dilate(erode,None,iterations=1)#逻辑运算,背景设置为白色,字体为黑色,便于识别cv.imshow('dilate',dilate)cv.bitwise_not(dilate,dilate)cv.imshow('binary-image',dilate)#识别图像test_message = Image.fromarray(dilate)text = pytesseract.image_to_string(test_message)print(f'define result:{text}')
#导入图像
src = cv.imread(r'./image.png')
#显示图像名字为input image,第二个是导入的图像。
cv.imshow('input image',src)
#调取函数导入图像
recognize_text(src)
cv.waitKey(0)
cv.destroyWindow()
结果分析
导入的原图image的图片情况
编译结果呈现:先用cv方法解析生成几种类型的图片,在用pytesseract识别图片中的文字了。
代码二
验证码图片Image5.png:
代码模块
import cv2 as cv
import pytesseract
from PIL import Imagedef recognize_text(image):# 边缘保留滤波 去噪blur = cv.pyrMeanShiftFiltering(image, sp=8, sr=60)cv.imshow('dst', blur)# 灰度图像gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)# 二值化ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)print(f'二值化自适应阈值:{ret}')cv.imshow('binary', binary)# 形态学操作 获取结构元素 开操作kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 2))bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)cv.imshow('bin1', bin1)kernel = cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))bin2 = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)cv.imshow('bin2', bin2)# 逻辑运算 让背景为白色 字体为黑 便于识别cv.bitwise_not(bin2, bin2)cv.imshow('binary-image', bin2)# 识别test_message = Image.fromarray(bin2)text = pytesseract.image_to_string(test_message)print(f'识别结果:{text}')src = cv.imread(r'./image5.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
结果呈现
总结经验
cv2,pytesseract的使用不复杂了,按照官方操作手册来使用即可。安装时候记得更换一下源的地址,有一些官方的源不容易搜索到CV2和pytesseract模块了,要更换地址源才可以用。不过代码模块只能识别图片中的数字,对图片中的中文还没有识别出来。可能需要重新写代码。
参考文献
使用Python中的pytesseract模块实现抓取图片中文字_业里村牛欢喜的博客-CSDN博客_利用pytesseract模块
Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略_一个处女座的程序猿的博客-CSDN博客_cv2
anaconda安装open cv_小夭。的博客-CSDN博客_conda安装cv
Python代码实现验证码识别_我行我素,向往自由的博客-CSDN博客_python 识别验证码
Python使用Cv2模块识别验证码相关推荐
- Python 使用cv2模块 进入视觉识别的报错,报错信息为AttributeError: module ‘cv2.cv2‘ has no attribute ‘bgsegm
Python 使用cv2模块 进入视觉识别的报错,报错信息为AttributeError: module 'cv2.cv2' has no attribute 'bgsegm 问题描述--cv2模块 ...
- Python用imghdr模块识别图片格式
Python用imghdr模块识别图片格式 imghdr.what(img_file) img_end = {'jpg', 'bmp', 'png', 'jpeg', 'rgb', 'tif', 't ...
- Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字
Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...
- python安装cv2模块的方法_Python opencv模块cv2安装和部分函数使用
Python opencv模块cv2安装和部分函数使用 前几天做了一下验证码识别,在这里分享一下用到的opencv模块cv2部分函数的使用方法,也是给自己加深一下记忆. 一.cv2模块安装 在这里提醒 ...
- layui图片src 指定后没显示_2种方法用python调用cv2模块给图片打马赛克
1 说明: ===== 1.1 因各种需要,给图片打马赛克,当然本人着重介绍python用cv2的方法,主要讲解python和cv2的相关编程知识. 1.2 cv2模块:是OpenCV的python调 ...
- cv2 python 多线程调用摄像头_2种方法用python调用cv2模块给图片打马赛克
1 说明: ===== 1.1 因各种需要,给图片打马赛克,当然本人着重介绍python用cv2的方法,主要讲解python和cv2的相关编程知识. 1.2 cv2模块:是OpenCV的python调 ...
- Python:利用cv2模块识别手势
简介:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库, 可以运行在Linux, Windows, Android和Mac-OS操作系统上. 它轻量级而且高效--由一系列 C 函数和少 ...
- python几行代码识别验证码_Python有多强?文字识别(验证码识别)只需三行代码!...
不要说这都是在借用其它语言的代码,其实这些东西真的无关紧要.何为Python高级语言,黑猫白猫能捉到老鼠的就是好猫!如果真的有那么高冷,那么任何程序你都要敲代码而不用任何模块? 再开个玩笑,要不用0和 ...
- python安装cv2模块_pythonimportcv2importError:DLLloadfailed:找不到指定模块
1.安装 (1)pip install opencv-python import cv2报错 解决方法:卸载原始版本,安装新的版本. pip uninstall opencv-python (2)在官 ...
最新文章
- 在Eclipse中打开Hadoop工程
- k3s安装和卸载:轻量级K8S
- C# 中的只读结构体(readonly struct)
- 微信pc群发器,支持小程序、视频号、名片、图片、文字等
- 敏捷开发人员结构_开发人员可以在敏捷外观方面发表意见的4种方法
- mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
- 当年如果有这个,语文就不会不及格了
- 汉字与多字节编码的转换 - 回复 不知道 的问题
- C语言程序设计-基础
- 解决无法删除文件:无法读取源文件或磁盘
- Win32 改变鼠标的光标图片
- kingroot android 8.1,360一键root手机版
- 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(K题)
- c语言怎么用setw输出每行6个,setw和setfill控制输出间隔
- 高红梅:第二章 海明威个人身份的探寻 第一节 性别身份意识与代际关系书写
- T a(v);和T a = v;的区别
- 微信小程序如何支持分享给朋友和分享到朋友圈?如何解决分享朋友圈灰色问题
- 修改mc服务器名字,好听的mc服务器名字
- 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)
- rabbitMQ实例(java)