一.显示图片
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))