Python实例之利用h5py库保存数据集
目录
- 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,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~
参考:
- https://blog.csdn.net/qq_41776781/article/details/93379739
- https://blog.csdn.net/a10201516595/article/details/105623141
Python实例之利用h5py库保存数据集相关推荐
- Python 爬虫篇-利用urllib库下载网页中的图片实例演示
我们用的是 urllib 库,这个库是 python 自带的,我们直接就可以使用. 我们需要来了解一下基本原理,它可以通过图片地址将图片下载下来. 我们来找一张图片做实例看一下. 查看图片的地址,把地 ...
- Python 图像处理篇-利用opencv库展示本地图片实例演示
python 常用的图像处理技术有两种方法,一种是 opencv,另一种是 pytesseract. opencv 进行图像处理的话,我们需要安装 opencv-python 和 numpy 这两个库 ...
- Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量
安装方法: pip install BeautifulSoup4 BeautifulSoup 详细使用文档 墨迹天气抓取演示 墨迹天气没有提供专门的天气接口 api,但我们可以用 BeautifulS ...
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
很简单,只要用 numpy 把图片解码一下就好了. import cv2 import numpy as np# img = cv2.imread("小爱.jpg") # 直接读取 ...
- Python笔记:利用pygame库实现一个俄罗斯方块小游戏(转载)
import random,time,pygame,sys from pygame.locals import *#导pygame内定义的一些常量 FPS=25#每秒传输帧数(刷新率),此处一秒内在屏 ...
- python读取pdf文档书签 bookmark_Python利用PyPDF2库获取PDF文件总页码实例
Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...
- python读取扫描形成的pdf_Python利用PyPDF2库获取PDF文件总页码实例
Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...
- PYTHON h5py库包安装及读写
一.h5py库包安装 1. 在线安装 基本方法: cmd安装:pip install h5py pycharm环境:file-->setting-->PROJECT-->Projec ...
- Cookie登录爬取实战:Python 利用urllib库的cookie实现网站登录并抓取
1 环境:Python 3 +urllib库 实战网站:http://www.mjzcnd.com/ 梅江之春论坛网站 2 背景: 现在许多网站都需要登录后才能访问某个页面,在登陆之前,我们是没有权 ...
最新文章
- 碾压专业机构,27 岁华裔小伙推出美国最准新冠预测模型
- java的线程管理器,QuickThread - Java线程池管理器
- 腾讯电脑管家13内测版官方下载地址
- 架构之:REST和RESTful
- Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP
- linux 镜像错误,VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)
- hbase scala 实例_scala操作HBase2.0
- horizontal center and vertical middle in CSS
- 电子商务专业实习总结
- php strictbool,PHP 7 Bool类型提示不起作用
- android videoview 拉伸,android - 在ExoPlayer中轻按全屏时,视频会拉伸和旋转 - 堆栈内存溢出...
- 查看python源码位置方法以及潜在误区
- 错误: 实例 ruiy 执行所请求操作失败,实例处于错误状态。: 请稍后再试 [错误: #39;ascii#39; codec can#39;t decode byte 0xe6 in po...
- 针对五款IPA文件安装工具的深度评测
- 新手演讲:走上演讲台的第一步
- 计算机社团收获作文,写智慧校园的优秀作文
- 超强大的数学计算器——WolframAlpha(含安卓下载连接)
- 片上总线Wishbone 学习(七)总线周期之握手协议
- 一页纸商业计划书模板(转载)
- 第十五篇:大球联赛与小球联赛