图像转化成TFrecords格式并回转
import os
import tensorflow as tf
from PIL import Image
import numpy as np
cat_image_path='D:/软件/pycharmProject/wenyuPy/CatImage/'
cat_tfrecords='D:/软件/pycharmProject/wenyuPy/CatImage/cat.tfrecords'
writer=tf.python_io.TFRecordWriter(cat_tfrecords)
label1=np.array([1,0,0])
label2=np.array([0,1,0])
label3=np.array([0,0,1])
labels=[label1,label2,label3]
img1=Image.open('D:/软件/pycharmProject/wenyuPy/CatImage/1.jpg')
img1 = img1.resize((256, 256))
img2=Image.open('D:/软件/pycharmProject/wenyuPy/CatImage/2.jpg')
img2 = img2.resize((256, 256))
img3=Image.open('D:/软件/pycharmProject/wenyuPy/CatImage/3.jpg')
img3 = img3.resize((256, 256))
images=[img1,img2,img3]
for i in range(len(images)):
features=tf.train.Features(feature={
'catimage':tf.train.Feature(bytes_list=tf.train.BytesList(value=[images[i].tobytes()])),
'catlabel':tf.train.Feature(bytes_list=tf.train.BytesList(value=[labels[i].tobytes()]))
} )
example=tf.train.Example(features=features)
writer.write(example.SerializeToString())
writer.close()
print('the tfrecords has benn writen')
import tensorflow as tf
from PIL import Image
input_tfrecords='D:/软件/pycharmProject/wenyuPy/CatImage/cat.tfrecords'
#create a dataset
cat_dataset=tf.data.TFRecordDataset(input_tfrecords)
#定义解析函数来解析我们刚才所生成的tfrecords文件
def parser(record):
features=tf.parse_single_example(
record,
features={
'catimage':tf.FixedLenFeature([],tf.string),
'catlabel':tf.FixedLenFeature([],tf.string)
})
return features['catimage'],features['catlabel']
#dataset中的map接收的是一个函数,dataset中的每个元素都会被当作这个函数的输入并且并将函数的返回值作为新的dataset
cat_dataset=cat_dataset.map(parser)
cat_iterator=cat_dataset.make_one_shot_iterator()
#label=tf.cast(label,tf.int32)
channel=3#定义的是RGB图像
with tf.Session() as sess:
for i in range(3):
img, label = cat_iterator.get_next()
image = tf.decode_raw(img, tf.uint8)
image = tf.reshape(image, [256, 256, 3])
single,l=sess.run([image,label])
pic=Image.fromarray(single,'RGB')
pic.save('D:/软件/pycharmProject/wenyuPy/CatImage/tfrecordscat/'+str(i)+'.jpg')
print('the picture has been take out')
我们之前是通过filename_queue=tf.train.string_input_producer([filename],shuffle=True),这条语句将文件名打乱生成一个文件名序列,其实我也不太懂为什么这样做,然后再用reader=tf.TFRecordReader()用来读取文件序列,我们读取到的是已经被序列化的二进制图像和label,然后再对其进行反序列化并且将二进制文件还原成我们原始的图像。但是我在运行的时候发现IDE出现了一个警告说TFRecordReader读取文件序列已经被tf.data.TFRecordDataset取代,然后查资料将程序改动了一下。1.首先我随机找了三张猫的图片放在了我电脑的D:\软件\pycharmProject\wenyuPy\CatImage这个目录下 2.然后我将生成好的猫图像的tfrecords文件放在了同样的目录下,地址可随意指定。 3.我们使用tf.data.TFRecordDataset(filename)来生成一个dataset,然后用这个dataset去生成一个迭代器,每次迭代一组image和label,存到指定的目录下即可。fromarray函数我也没有弄懂是什么意思,还有待解决。

图像转化成TFrecords格式并回转的更多相关文章
- 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频
/************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...
- 将序列化成json格式的日期(毫秒数)转成日期格式
<script> $(function () { loadInfo(); }) function loadInfo() { $.post("InfoList.ashx" ...
- 把硬盘格式化成ext格式的cpu占用率就下来了
把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...
- RGB格式图像转化为HSV格式
注:在阴影检测算法中经常需要将RGB格式的图像转化为HSV格式,对于阴影区域而言,它的色度和饱和度相对于原图像而言变化不大,主要是亮度信息变化较大,,将RGB格式转化为HSV格式,就可以得到H.S.V ...
- (K)ubuntu上将分区格式化成NTFS格式
新买了硬盘,装系统时,为Windows预留了几个分区,由于没有其他选择,因此将分区格式化成了fat32格式.装完系统后,总是很纠结,想把这些分区格式化成NTFS格式. google了一下,从这个网址( ...
- html中canvas渲染图片,并转化成base64格式保存
最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取 ...
- 深度学习tensorflow实战笔记(2)图像转换成tfrecords和读取
1.准备数据 首选将自己的图像数据分类分别放在不同的文件夹下,比如新建data文件夹,data文件夹下分别存放up和low文件夹,up和low文件夹下存放对应的图像数据.也可以把up和low文件夹换成 ...
- 将序列化成json格式后日期(毫秒数)转成日期格式
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaS ...
- c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变
c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...
随机推荐
- 在线预览-Java 使用 Print2Flash 实现Office文档在线阅读
近期项目上遇到一个需求是用户上传的文档进行在线浏览,之前有过一篇使用 OpenOffice 将 word 转换成 html 页面进行展示的.现在介绍一个新的工具那就是 Print2Flash . ...
- 从零开始 CentOs 7 搭建论坛BBS Discuz_X3.2
由于公司项目需要一个互动平台,可以发起活动,发消息留言,讨论过后发现这竟然是一个论坛的功能. 于是就不打算耗费功夫开发相关功能,直接另外搭一套BBS算球... 一直觉得搭建BBS不是一件难事,目前有很 ...
- day22
# day22 ## 复习 ```python# 1.内存管理# 引用计数:垃圾回收机制工作原理# -- 引用就 +1 ,释放就 -1 , 当计数为0时,就会被垃圾回收机制回收 # 标记清除:解决循环 ...
- Unity --- 设置选择的图片的格式
static void Setting(string assetPath, int maxSize, TextureImporterFormat androidFormat, TextureImpor ...
- Docker镜像加速器配置
一.为什么要配置Docker镜像加速器 因为我们默认pull的docker镜像是从Docker Hub来下载,由于其服务器在国外,速度会比较慢.因此我们可以配置成国内的镜像仓库,这样可以加速镜像的上传 ...
- ieda 快捷键修改方法
框中意思为: 1.增加快捷键 2.增加缩写
- linux 用户密码过期时间
/etc/login.defs 全局配置文件,即当新建用户时的默认设置 PASS_MIN_DAYS 5 #最近一次密码更新的日期+0 ,即允许用户更改自己的密码的日期 PASS_MAX_ ...
- 20165309 《网络对抗技术》实验五:MSF基础应用
20165309 <网络对抗技术>实验五:MSF基础应用 1.基础问题回答 (1)什么是exploit? (2)什么是payload? (3)什么是encode? (4)离实战还缺些什么技 ...
- Jupyter Notebook 修改默认打开的文件夹的位置
初次使用Jupyter Notebook,确实好用啊!!,又好看又好用,不过还是遇到了一个问题,安装好之后,打开Jupyter Notebook 的时候,默认的文件夹的位置是C盘下面的XXX目录,但是 ...
- HDFS的上传与下载(put & get)
最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...