显示图片,识别图片上的文字,检测图像轮廓,识别验证码

一.显示图片

import cv2

img = cv2.imread('D:\python course/tuxiangshibie\data/3.jpeg')
cv2.imshow('imshow', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

二.识别图片上的文字(中文英文数字)

import pytesseract
from PIL import Image
'''
识别图片上的文字,chi_sim识别中文,eng识别英文和数字
'''
if __name__ == '__main__':
    text = pytesseract.image_to_string(Image.open('D:\python course/tuxiangshibie\data/zw1.png'), lang='chi_sim')
    print(text)

三.检测图像轮廓

import cv2
'''
检测图像轮廓
'''
img = cv2.imread('D:\python course/tuxiangshibie\data/hammer.png', 0) # 原图位置
cv2.imwrite('D:\python course/tuxiangshibie\data/canny.png', cv2.Canny(img, 200, 300))  # 输出图(轮廓图)保存位置
cv2.imshow('canny', cv2.imread('D:\python course/tuxiangshibie\data/canny.png'))
cv2.waitKey()
cv2.destroyAllWindows()

四.识别验证码

# 识别验证码
import sys
'''
reload()表示重新加载模块 。在Python3中,reload()被转移到imp模块以及importlib模块中,
Python3.4之前在imp中,Python3.4之后imp模块逐步被废弃,reload()移至importlib模块中。
'''
from importlib import reload
reload(sys)
import  time
time1 = time.time()
from PIL import Image
import pytesseract

# 二值化算法(就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。)
def binarizing(img, threshold):
    pixdata = img.load()
    w, h = img.size
    for y in range(h):
        for x in range(w):
            if pixdata[x, y] < threshold:
                pixdata[x, y] = 0
            else:
                pixdata[x, y] = 255
        return img


# 去除干扰线算法
def depoint(img):
    pixdata = img.load()
    w, h = img.size
    for y in range(1, h-1):
        for x in range(1, w-1):
            count = 0
            if pixdata[x, y-1] > 245:
                count = count + 1
            if pixdata[x, y + 1] > 245:
                count = count + 1
            if pixdata[x - 1, y] > 245:
                count = count + 1
            if pixdata[x + 1, y] > 245:
                count = count + 1
            if count > 2:
                pixdata = 255
    return img


image = Image.open(r'D:\python course\tuxiangshibie\data/12.png')
img = image.convert('L')  # 转化为灰度图
img1 = binarizing(img, 190)  # 把图片变成二值图像
img1.show()
code = pytesseract.image_to_string(img1)  # 光学字符识别
print('识别该验证码是:' + str(code))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值