赞
踩
结果分析
识别验证码图片中的数字信息,用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 Image
-
-
- def 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。