OpenCV__Python 验证码识别_教程30

验证码识别,基于开闭操作

(1)先要安装pytesseract工具

pip install pytesseract

遇到出错,参照一下解决

https://blog.csdn.net/weixin_41644725/article/details/95344924

(2)代码

#引入opencv模块
import cv2 as cv
#引入numpy模块
import numpy as np
#引入sys模块
import sys

from PIL import Image
import pytesseract as tess

#验证码测试
def ocr_test(img):
    #(1)灰度化,阈值分割,黑色里面找白色!!!
    img = cv.GaussianBlur(img,(7,7),0)  
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    #ret, binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_TRIANGLE) 
    #binary = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,25,10)        
    print("threshold value: %s"%(ret)) #分割的阈值
    cv.namedWindow("open_binary_image",cv.WINDOW_NORMAL)
    cv.imshow("open_binary_image",binary)  

    #(2)选择核
    '''
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,4))
    binary = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)                   
    cv.namedWindow("open_test",cv.WINDOW_NORMAL)   
    cv.imshow("open_test",binary)
    '''
    textImage = Image.fromarray(binary)
    text = tess.image_to_string(textImage)
    #print(text)

def img_test():
    img = cv.imread('E:/chenopencvblogimg/yangzhengma1.png')     
    #判断是否读取成功
    if img is None:
        print("Could not read the image,may be path error")
        return
    cv.namedWindow("origin Pic",cv.WINDOW_NORMAL)
    cv.imshow("origin Pic",img)
    ocr_test(img)
    #让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!
    cv.waitKey(0)
    #销毁窗口
    cv.destroyAllWindows()


if __name__ == '__main__':
    sys.exit(img_test() or 0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值