当前位置:   article > 正文

Python使用Cv2模块识别验证码_python cv2 360牛盾验证码

python cv2 360牛盾验证码

目录

业务需求

需求分析

代码一

结果分析

代码二

代码模块

结果分析

总结经验

参考文献


业务需求

        识别验证码图片中的数字信息,用python的图形表示出来了

需求分析

        使用Cv2模块、pytesseract模块进行操作。CV2是计算机建模识别的库,用来给图像进行灰度处理,降噪处理,形态学分析。pytesseract模块将智能识别图片字体数字,用于打印出来。

代码一

  1. # -*- conding:utf-8 -*-
  2. #二维码识别,呈现不同效果。
  3. #导入计算机学习开源数据库
  4. import cv2 as cv
  5. #导入计算机识别模块
  6. import pytesseract
  7. #导入图像模块,形成图像
  8. from PIL import Image
  9. #定义函数,导入图像
  10. def recognize_text(image):
  11. #边缘保留滤波,去除噪
  12. dst = cv.pyrMeanShiftFiltering(image,sp=10,sr=150)
  13. #灰度图像
  14. gray = cv.cvtColor(dst,cv.COLOR_BGR2GRAY)
  15. #图像二值化
  16. ret,binary = cv.threshold(gray,0,225,cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
  17. #形态学操作 ,腐蚀,膨胀
  18. erode = cv.erode(binary,None,iterations=2)
  19. dilate = cv.dilate(erode,None,iterations=1)
  20. #逻辑运算,背景设置为白色,字体为黑色,便于识别
  21. cv.imshow('dilate',dilate)
  22. cv.bitwise_not(dilate,dilate)
  23. cv.imshow('binary-image',dilate)
  24. #识别图像
  25. test_message = Image.fromarray(dilate)
  26. text = pytesseract.image_to_string(test_message)
  27. print(f'define result:{text}')
  28. #导入图像
  29. src = cv.imread(r'./image.png')
  30. #显示图像名字为input image,第二个是导入的图像。
  31. cv.imshow('input image',src)
  32. #调取函数导入图像
  33. recognize_text(src)
  34. cv.waitKey(0)
  35. cv.destroyWindow()

结果分析

        导入的原图image的图片情况

编译结果呈现:先用cv方法解析生成几种类型的图片,在用pytesseract识别图片中的文字了。

 代码二

验证码图片Image5.png:

代码模块

  1. import cv2 as cv
  2. import pytesseract
  3. from PIL import Image
  4. def recognize_text(image):
  5. # 边缘保留滤波 去噪
  6. blur = cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
  7. cv.imshow('dst', blur)
  8. # 灰度图像
  9. gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
  10. # 二值化
  11. ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
  12. print(f'二值化自适应阈值:{ret}')
  13. cv.imshow('binary', binary)
  14. # 形态学操作 获取结构元素 开操作
  15. kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 2))
  16. bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
  17. cv.imshow('bin1', bin1)
  18. kernel = cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))
  19. bin2 = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)
  20. cv.imshow('bin2', bin2)
  21. # 逻辑运算 让背景为白色 字体为黑 便于识别
  22. cv.bitwise_not(bin2, bin2)
  23. cv.imshow('binary-image', bin2)
  24. # 识别
  25. test_message = Image.fromarray(bin2)
  26. text = pytesseract.image_to_string(test_message)
  27. print(f'识别结果:{text}')
  28. src = cv.imread(r'./image5.png')
  29. cv.imshow('input image', src)
  30. recognize_text(src)
  31. cv.waitKey(0)
  32. 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 识别验证码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/485980
推荐阅读
相关标签
  

闽ICP备14008679号