TensorFlow识别复杂验证码以及搭建生产环境(3)—— 随机读取训练集

0x00 前言

本篇博文的代码主要修改自以前的一篇文章: Tensorflow应用之简单验证码识别

0x01 gen_check_code.py

这个python 文件主要是实现了随机选择训练集里面的内容并将其封装成一个函数供神经网络使用。
其中的 root_dir 参数要根据具体的训练文件的位置进行修改。

代码如下:

from captcha.image import ImageCaptcha  # pip install captcha
import numpy as np
from PIL import Image
import random
# import matplotlib.pyplot as plt
import os
from random import choice

# 验证码中的字符, 就不用汉字了
number = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
            'v', 'w', 'x', 'y', 'z']
# ALPHABET = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
#             'V', 'W', 'X', 'Y', 'Z']

root_dir = "d:\\jwxt\\train"

# 验证码一般都无视大小写;验证码长度4个字符
def random_captcha_text(char_set=number, captcha_size=4):
    captcha_text = []
    for i in range(captcha_size):
        c = random.choice(char_set)
        captcha_text.append(c)
    return captcha_text


# 生成字符对应的验证码
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, captcha_text + '.jpg')  # 写到文件

    captcha_image = Image.open(captcha)
    captcha_image = np.array(captcha_image)
    return captcha_text, captcha_image



def gen_list():
    img_list = []
    for parent, dirnames, filenames in os.walk(root_dir):  # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
        for filename in filenames:  # 输出文件信息
            img_list.append(filename.replace(".jpg", ""))
            # print("parent is:" + parent)
            # print("filename is:" + filename)
            # print("the full name of the file is:" + os.path.join(parent, filename))  # 输出文件路径信息
    return img_list

img_list = gen_list()

def gen_captcha_text_and_image_new():
    img = choice(img_list)
    captcha_image = Image.open(root_dir + "\\" + img + ".jpg")
    # captcha_image = captcha_image.resize((90, 30))
    captcha_image = np.array(captcha_image)
    return img, captcha_image

0x02 相关的代码说明

由于我们的训练集的验证码中只包含数字与小写字母,因此,我们只使用number 与 alphabet 所包含的字母。随机读取文件部分代码来自 Python随机读取文件
gen_captcha_text_and_image_new 这个函数是我们真正要用到的函数,主要的作用是把图片转换成数组返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值