8.用神经网络破解验证码

本文探讨如何利用深度学习中的神经网络模型来识别和破解验证码。内容涵盖验证码的类型、神经网络的基本原理以及训练过程,揭示了深度学习在图像识别领域的强大能力。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-
"""
Created on Fri Oct  5 08:02:05 2018

@author: asus
"""
#8 用神经网络破解验证码

#8.2.1 绘制验证码
import numpy as np
from PIL import Image, ImageDraw, ImageFont
from skimage import transform as tf
#创建一个用于生产验证码的基础函数。
def  create_captcha(text, shear=0, size=(100, 24)):
    im = Image.new("L", size, "black") #使用字母L生成一张黑白图像
    draw = ImageDraw.Draw(im) #初始化实例,为后面PIL绘图做准备
    font = ImageFont.truetype(r"Coval-Bold.otf", 22) #指定所使用的字体
    draw.text((2, 2), text, fill=1, font=font)
    image = np.array(im) #把PIL图像转换为numpy数组
    affine_tf = tf.AffineTransform(shear=shear) #应用错切变化效果,返回图像
    image = tf.warp(image, affine_tf)
    return image / image.max()       #对图像特征进行归一化处理

%matplotlib inline
from matplotlib import pyplot as plt
#生成验证码图像并显示它。
image = create_captcha("GENE", shear=0.3)
plt.imshow(image, cmap='Greys')

#8.2.2 将图像且分为单个字母
from skimage.measure import label, regionprops
#图像风格函数接收图像列表,返回小图像列表,每张小图像为单词的一个字母
def segment_image(image):
    labeled_image = label(image > 0) 
    subimages = []
    for region in regionprops(labeled_image):
        start_x, start_y, end_x, end_y = region.bbox
        subimages.append(image[start_x:end_x,start_y:end_y])
    if len(subimages) == 0:
        return [image,]
    return subimages
#使用刚才定义的函数,就能从前面生成的验证码中找到小图像
subimages = segment_image(image)
#还可以查看小图像
f, axes = plt.subplots(1, len(subimages), figsize=(10, 3))
for i in range(len(subimages)):
    axes[i].imshow(subimages[i], cmap="gray")

#8.2.3 创建训练集
from sklearn.utils import check_random_state
#指定随机状态值,创建字母列表
random_state = check_random
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值