python实现随机验证码图片生成

今天药忘吃喽~ 2023-07-23 14:55 56阅读 0赞

最近在学习 深度学习实现验证码模型训练,因为需要大量的验证码图片,所以要自动生成验证码图片,效果图:
在这里插入图片描述

首先安装相应的库包:

  1. #验证码生成库
  2. pip install captcha
  3. #进度条显示库,显示图片生成进度
  4. pip install tqdm

code:

  1. import numpy as np
  2. import random
  3. import sys
  4. from PIL import Image
  5. from captcha.image import ImageCaptcha
  6. num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
  7. #生成验证码的随机数字列表,验证码图片中有4个数字
  8. def random_text(charset=num, size=4):
  9. caplist = []
  10. for i in range(size):
  11. captcha_text = random.choice(charset)
  12. caplist.append(captcha_text)
  13. return caplist
  14. #生成验证码
  15. def create_captext():
  16. caplist = random_text()
  17. caplist = ''.join(caplist)#将验证码列表转为字符串
  18. image = ImageCaptcha()
  19. captcha = image.generate(caplist)#生成图片
  20. image.write(caplist,'image2/'+caplist+'.jpg' )#保存图片,图片名即为里面的数字
  21. #手动实现进度条
  22. for i in range(100):
  23. create_captext()
  24. sys.stdout.write("\r start %d/%d" %(i+1, 100))
  25. sys.stdout.flush()
  26. sys.stdout.write("\n")
  27. sys.stdout.flush()
  28. #自动进度条
  29. from tqdm import tqdm
  30. import time
  31. for i in tqdm(range(100)):
  32. create_captext()
  33. time.sleep(0.01)

进度条效果:
在这里插入图片描述

sys.stdout.write()输出不会自动换行,没有end,可用转义字符自行控制

  1. /n 换行
  2. /r 回车到本行首,可刷新输出

sys.stdout.flush()强制刷新缓冲区

当我们需要打印一些字符时,并不是立刻就打印,而是先将需要打印的字符放入缓冲区,在缓冲区刷新时打印,当缓冲区未满,或者程序运行未结束时,可使用sys.stdout.flush()强制刷新缓冲区,立刻进行打印

进度条学习参考

发表评论

表情:
评论列表 (有 0 条评论,56人围观)

还没有评论,来说两句吧...

相关阅读