应用案例
之前学习了逻辑回归,我们现在来做一个案例。
一个图片验证码识别的案例:怎么从图片中准确的识别出正确的数字。
我们分了三步。
第一步:先生成150验证码图片,每个图片有5个数字。图片中有随机的噪点。
具体代码实现:
"""
Date: 2019--10 09:39
User: yz
Email: 1147570523@qq.com
Desc:
"""
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import random
def getRandomStr():
random_num=str(random.randint(0,9))
return random_num
def getRandomColor():
#生成三个0~255的随机数字
num1=random.randint(0,255)
num2=random.randint(0,255)
num3=random.randint(0,255)
return num1,num2,num3
def generate_captcha():
image=Image.new("RGB",(150,50),(255,255,255))
draw=ImageDraw.Draw(image)
font=ImageFont.truetype("LiberationSans-Bold.ttf",size=32)
lable=""
for i in range(5):
#得到一个随机的数字
random_char=getRandomStr()
lable +=random_char
draw.text((10+i*30,0),random_char,getRandomColor(),font=font)
width =150
height=30
for i in range(3):
x1=random.randint(0,width)
x2=random.randint(0,width)
y1=random.randint(0,height)
y2=random.randint(0,height)
draw.line((x1,y1,x2,y2),fill=(0,0,0))
for i in range(5):
draw.point([random.randint(0,width),random.randint(0,height)],fill=getRandomColor())
x=random.randint(0,width)
y=random.randint(0,height)
draw.arc((x,y,x+4,y+4),0,90,fill=(0,0,0))
#保存
image.save(open(''.join(['img/',lable,'.png']),'wb'),'png')
if __name__ == '__main__':
for i in range(150):
generate_captcha()