python opencv+pytesseract 验证码识别

简介: 人总要呆在一种什么东西里,沉溺其中,苟有所得,才能证明自己的存在,切实地活出自己的价值 ——汪曾祺

一、环境配置


  • 需要 pillow 和 pytesseract 这两个依赖库,pip install安装上就好了。
pipinstallpillow-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.compipinstallpytesseract-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com



  • 安装好Tesseract-OCR.exe
  • pytesseract库的配置:搜索找到pytesseract.py,打开该.py文件,找到tesseract_cmd,改变它的值为刚才安装 tesseract.exe 的路径。


二、验证码识别


识别验证码,需要先对图像进行预处理,去除会影响识别准确度的线条或噪点,提高识别准确度。


实例1


# -*- coding: UTF-8 -*-"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_text(image):
# 边缘保留滤波  去噪dst=cv.pyrMeanShiftFiltering(image, sp=10, sr=150)
# 灰度图像gray=cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
# 二值化ret, binary=cv.threshold(gray, 0, 255, 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'识别结果:{text}')
src=cv.imread(r'./test/044.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


识别结果:3n3DProcessfinishedwithexitcode0


实例2


"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_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'./test/045.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


二值化自适应阈值:181.0识别结果:8A62N1Processfinishedwithexitcode0



实例3


"""@公众号      : AI庭云君@Author     : 叶庭云@CSDN       : https://yetingyun.blog.csdn.net/"""importcv2ascvimportpytesseractfromPILimportImagedefrecognize_text(image):
# 边缘保留滤波  去噪blur=cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
cv.imshow('dst', blur)
# 灰度图像gray=cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
# 二值化  设置阈值  自适应阈值的话 黄色的4会提取不出来ret, binary=cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)
print(f'二值化设置的阈值:{ret}')
cv.imshow('binary', binary)
# 逻辑运算  让背景为白色  字体为黑  便于识别cv.bitwise_not(binary, binary)
cv.imshow('bg_image', binary)
# 识别test_message=Image.fromarray(binary)
text=pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src=cv.imread(r'./test/045.jpg')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()


运行效果如下:


/

二值化设置的阈值:185.0识别结果:7364Processfinishedwithexitcode0

目录
相关文章
|
30天前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
154 1
|
2月前
|
机器学习/深度学习 人工智能 算法
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
51 4
|
30天前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
30天前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
30 1
|
30天前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
130 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
27天前
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。
|
2月前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
133 19
|
2月前
|
机器人 计算机视觉 Python
使用Python生成图片验证码
本文介绍了如何使用Python的PIL库生成简单的验证码图片和文本。通过实现CaptchaGenerator类,我们可以轻松生成包含随机字符和干扰元素的验证码。这种技术可以应用于Web应用程序中,用于增强用户验证的安全性和可靠性。
|
3月前
|
机器学习/深度学习 监控 自动驾驶
如何使用 Python 和 OpenCV 进行实时目标检测
如何使用 Python 和 OpenCV 进行实时目标检测
|
3月前
|
存储 JavaScript 前端开发
Python Django下的实现注册验证码
摘要: 使用Python生成随机验证码图像,包括干扰线和噪点,保存到静态文件夹,并将验证码文本存储到数据库。数据库表包含ID、验证码图片路径和验证码文本。JavaScript函数`getRandomInt`生成1到300的随机数,用于请求对应数据库条目的验证码和图片。XMLHttpRequest发送POST请求到服务器,视图函数返回指定ID的验证码图片路径,实现验证码的动态刷新。