code: # coding:utf-8
  from captcha.image import ImageCaptcha  # pip install captcha
  import numpy as np
  import matplotlib.pyplot as plt
  from PIL import Image
  import random
  import time
  import sys
  
  from constants import number
  from constants import alphabet
  from constants import ALPHABET
  
  
  # 验证码一般都无视大小写；验证码长度4个字符
  def random_captcha_text(char_set=number + alphabet + ALPHABET, captcha_size=4):
      """ 指定使用的验证码内容列表和长期 返回随机的验证码文本 """
      captcha_text = []
      for i in range(captcha_size):
          c = random.choice(char_set)
          captcha_text.append(c)
      return captcha_text
  
  
  # 使用ImageCaptcha库生成验证码
  def gen_captcha_text_and_image():
      """生成字符对应的验证码 """
      image = ImageCaptcha()  # 导入验证码包 生成一张空白图
  
      captcha_text = random_captcha_text()  # 随机一个验证码内容
      captcha_text = ''.join(captcha_text)  # 类型转换为字符串
  
      captcha = image.generate(captcha_text)
      # image.write(captcha_text, 'image/' + captcha_text + '.jpg')  # 写到文件
  
      # rm  =  'rm '+captcha_text + '.jpg'
      # os.system(rm)
  
      captcha_image = Image.open(captcha)  # 转换为图片格式
      captcha_image = np.array(captcha_image)  # 转换为 np数组类型
  
      return captcha_text, captcha_image
  
  
  # 把彩色图像转为灰度图像（色彩对识别验证码没有什么用）
  def convert2gray(img):
      if len(img.shape) > 2:
          gray = np.mean(img, -1)
          # 上面的转法较快，正规转法如下
          # r, g, b = img[:,:,0], img[:,:,1], img[:,:,2]
          # gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
          return gray
      else:
          return img
  
  
  if __name__ == '__main__':
      # 测试
      for i in range(10000):
          text, image = gen_captcha_text_and_image()
          print('begin ', time.ctime(), type(image))
          f = plt.figure()
          ax = f.add_subplot(111)
          ax.text(0.1, 0.9, text, ha='center', va='center', transform=ax.transAxes)
          plt.imshow(image)
          # plt.show()  # 显示，，取消注释并在30行取消写到文件的注释即可保存为文件
          print('end ', time.ctime())
      print("over!")
      sys.exit()
  
  
apis: numpy.array matplotlib.pyplot.figure matplotlib.pyplot.imshow numpy.mean