matplotlib创建并显示子图

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt

def get_batch(path,batch_size):
    #获取所有图片路径
    img_list = [os.path.join(path,i) for i in os.listdir(path)]
    #获取可以训练的批次数
    n_batchs = len(img_list)//batch_size
    #只保留可训练的整数倍张的图片
    img_list = img_list[:n_batchs*batch_size]
    #将这些训练数据分成一批次一批次的
    for i in range(n_batchs):
        #按顺序获取一个批次的数据路径
        tmp_img_list = img_list[i*batch_size:(i+1)*batch_size]
        # 将这批读取过来
        imgs = [cv2.imread(img) for img in tmp_img_list]
        #进行转换
        imgs = np.array(imgs)
        #构造一个生成器以便
        yield imgs

def vis_img(batch_size, samples,i):
    #创建8行8列的子图,每个子图的大小是7x7,并且共享x轴和y轴
    #返回一个figure图像和子图ax的array列表
    fig, axes = plt.subplots(figsize=(12, 12), nrows=8, ncols=8, sharey=True, sharex=True)
    #axes.flatten()是将所有子图对象形成一个列表
    #将可迭代对象子图列表和这一批次的图片中的每一个对应的都打包成一个元组
    for ax, img in zip(axes.flatten(), samples[batch_size]):
        ax.xaxis.set_visible(False)#去掉x轴的栅格
        ax.yaxis.set_visible(False)#去掉y轴的栅格
        #将每一个子图显示出来
        im = ax.imshow(img.reshape((96, 96, 3)))
    plt.pause(0.5)

imgs = [img for img in get_batch('faces', 64)]
imgs = np.array(imgs)
for i in range(len(imgs)):
    vis_img(i, imgs, 0)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值