目录

  • 1、数据集介绍
  • 2、保存为HDF5文件
  • 3、从h5py中读取图像
  • 4、查看图像
  • 5、拓展——将压缩包内图像保存为HDF5文件

1、数据集介绍

本文选用的数据集是CelebA数据集)数据集,该数据集由202599幅图像组成,本文选取了前20000张数据,图像保存在名为img_align_celeba的文件夹中,有需要的可以自行下载:https://download.csdn.net/download/didi_ya/52035107。

h5py是python中一种数据压缩格式,它的优势:速度快、压缩效率高。尤其是在处理深度学习的大量图像时,常常用到。
h5py库的安装十分简单,直接在cmd命令行窗口输入:

pip install h5py

h5py库的相关函数和方法可以去官网查找:h5py官网。

2、保存为HDF5文件

由于这20000张图像没有标签,因此直接读取图像存入h5py文件中即可,代码如下:

import os
import numpy as np
import cv2
import h5pydef save_image_to_h5py(path):img_list=[]  #初始化for dir_image in os.listdir(path):#读取文件img=cv2.imread(os.path.join(path,dir_image))img_list.append(img)  #追加到img_list列表中img_np = np.array(img_list)  #转为numpy的ndarray类型f = h5py.File('hdf5_file.h5', 'w')  #写入文件f['image'] = img_np  #名称为imagef.close()  #关闭文件save_image_to_h5py('img_align_celeba')

3、从h5py中读取图像

读取图像代码如下:

import h5py
file=h5py.File('hdf5_file.h5','r')
image = file['image'][0, :, :, :]

可以检查一下image的形状:

image.shape

运行结果:
(218, 178, 3)

【注意】:这里可以查看一下x[‘image’]的形状:

image = x['image']
image.shape

运行结果:
(20000, 218, 178, 3)

这20000张图像的全部数据都存在这里了,想调用哪个图像第一个参数就选几即可。

4、查看图像

读取图像完成后,可以查看图像,查看图像有两种方法:
方法一:利用matplotlib工具包

代码示例:

import matplotlib.pyplot as plt
plt.imshow(image)

显示图像:

可以发现显示的图像偏蓝,这是因为matplotlib 的颜色通道是BGR,不是一般的RGB,因此需要加入如下代码:

res = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

显示图像:

方法二:直接利用cv2

代码如下:

import cv2
cv2.imshow('image',image)
cv2.waitKey(0)   #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。
#若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindows()  #销毁所有窗口

运行结果:(独立窗口直接运行)

5、拓展——将压缩包内图像保存为HDF5文件

将压缩包内图像保存为HDF5文件利用的是python的zipfile包,完整代码如下:

import h5py
import zipfile
import imageio
import oshdf5_file = 'celeba.h5'
total_images = 20000   #总共20000张图像with h5py.File(hdf5_file,'w') as hf:count=0with zipfile.ZipFile('img_align_celeba.zip', 'r') as zf:for i in zf.namelist():ofile = zf.extract(i)img = imageio.imread(ofile)os.remove(ofile)#将图像添加到HDF5文件中并重新命名hf.create_dataset('img_align_celeba/'+str(count)+'.jpg', data=img, compression="gzip", compression_opts=9)count = count + 1if(count%1000 == 0):print("images done .. ", count)if(count==total_images):break

ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~

参考:

  1. https://blog.csdn.net/qq_41776781/article/details/93379739
  2. https://blog.csdn.net/a10201516595/article/details/105623141

Python实例之利用h5py库保存数据集相关推荐

  1. Python 爬虫篇-利用urllib库下载网页中的图片实例演示

    我们用的是 urllib 库,这个库是 python 自带的,我们直接就可以使用. 我们需要来了解一下基本原理,它可以通过图片地址将图片下载下来. 我们来找一张图片做实例看一下. 查看图片的地址,把地 ...

  2. Python 图像处理篇-利用opencv库展示本地图片实例演示

    python 常用的图像处理技术有两种方法,一种是 opencv,另一种是 pytesseract. opencv 进行图像处理的话,我们需要安装 opencv-python 和 numpy 这两个库 ...

  3. Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量

    安装方法: pip install BeautifulSoup4 BeautifulSoup 详细使用文档 墨迹天气抓取演示 墨迹天气没有提供专门的天气接口 api,但我们可以用 BeautifulS ...

  4. Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示

    很简单,只要用 numpy 把图片解码一下就好了. import cv2 import numpy as np# img = cv2.imread("小爱.jpg") # 直接读取 ...

  5. Python笔记:利用pygame库实现一个俄罗斯方块小游戏(转载)

    import random,time,pygame,sys from pygame.locals import *#导pygame内定义的一些常量 FPS=25#每秒传输帧数(刷新率),此处一秒内在屏 ...

  6. python读取pdf文档书签 bookmark_Python利用PyPDF2库获取PDF文件总页码实例

    Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...

  7. python读取扫描形成的pdf_Python利用PyPDF2库获取PDF文件总页码实例

    Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...

  8. PYTHON h5py库包安装及读写

    一.h5py库包安装 1. 在线安装 基本方法: cmd安装:pip install h5py pycharm环境:file-->setting-->PROJECT-->Projec ...

  9. Cookie登录爬取实战:Python 利用urllib库的cookie实现网站登录并抓取

    1 环境:Python 3 +urllib库 实战网站:http://www.mjzcnd.com/  梅江之春论坛网站 2 背景: 现在许多网站都需要登录后才能访问某个页面,在登陆之前,我们是没有权 ...

最新文章

  1. 碾压专业机构,27 岁华裔小伙推出美国最准新冠预测模型
  2. java的线程管理器,QuickThread - Java线程池管理器
  3. 腾讯电脑管家13内测版官方下载地址
  4. 架构之:REST和RESTful
  5. Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP
  6. linux 镜像错误,VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)
  7. hbase scala 实例_scala操作HBase2.0
  8. horizontal center and vertical middle in CSS
  9. 电子商务专业实习总结
  10. php strictbool,PHP 7 Bool类型提示不起作用
  11. android videoview 拉伸,android - 在ExoPlayer中轻按全屏时,视频会拉伸和旋转 - 堆栈内存溢出...
  12. 查看python源码位置方法以及潜在误区
  13. 错误: 实例 ruiy 执行所请求操作失败,实例处于错误状态。: 请稍后再试 [错误: #39;ascii#39; codec can#39;t decode byte 0xe6 in po...
  14. 针对五款IPA文件安装工具的深度评测
  15. 新手演讲:走上演讲台的第一步
  16. 计算机社团收获作文,写智慧校园的优秀作文
  17. 超强大的数学计算器——WolframAlpha(含安卓下载连接)
  18. 片上总线Wishbone 学习(七)总线周期之握手协议
  19. 一页纸商业计划书模板(转载)
  20. 第十五篇:大球联赛与小球联赛

热门文章

  1. 鸿蒙与Android API对应关系
  2. Chrome浏览器屏蔽百度推广
  3. 苹果6访问限制密码4位_苹果ios签名:AppleID为什么开启双重认证那么重要
  4. springboot+Rabit实战一:(Rabbit MQ windows 环境搭建)
  5. jQuery 画二维码
  6. 基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真
  7. HDU4489 动归解决
  8. STM32F103c8t6点灯
  9. 设计模式六大原则——合成/聚合复用原则(CARP)
  10. 服装店管理软件排名,让你选对是关键