图像转化成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,编译后能将文本文件 ...
随机推荐
- Git 与 GitHub 简介
Git 与 GitHub 的来历 Linux 之父 Linus 在 1991 年创建开源的 Linux 操作系统之后,多年来依靠全世界广大热心志愿者的共同建设,经过长足发展,现已成为世界上最大的服务器 ...
- 微观:心流,宏观:ikigai
ikigai: 心流:在心理学中是一种某者在专注进行某行为时所表现的心理状态.如艺术家在创作时所表现的心理状态.某者在此状态时,通常不愿被打扰,即抗拒中断.定义是一种将个人精神力完全投注在某种活动上的 ...
- Eclipse下运行maven项目失败且Tomcat服务器也启动不了
今天遇到一个神奇的问题,在eclipse中创建一个maven项目后,Run on server 时说服务器启动失败.我以为是Eclipse配置tomcat的问题.找了一大堆没找到想要的答案!!! 我还 ...
- bs4 FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
安装beautifulsoup后,运行测试报错 from urllib import requestfrom bs4 import BeautifulSoup url = "http://w ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- NetSec2019 20165327 EXP5 MSF基础应用
NetSec2019 20165327 EXP5 MSF基础应用 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如 ...
- LNMP的搭建
一.下载安装MySQL 1.1:下载地址:https://dev.mysql.com/downloads/mysql/ 1.2:安装后 1.2.1:解压:tar -xf mysql-8.0.15-li ...
- 解决:SSM框架中普通类调用Service的问题 (转)
http://blog.csdn.net/gwd1154978352/article/details/73480959
- WCF:一个棘手的问题
前言 在做即时通信项目时,手上另一个项目的颠簸,即时通信项目一直是改改停停的,一些改动比较小,没有即时的签入,然后一段时间本地的项目代码与源代码存在不少区别,在这种情况下,因为新的需求添加,需要给WC ...
- 双目深度估计传统算法流程及OpenCV的编译注意事项
起因: 1. 双目立体视觉中双目深度估计是非常重要且基础的部分,而传统的立体视觉的算法基本上都在opencv中有相对优秀的实现.同时考虑了性能和效率.因此,学习使用opencv接口是非常重要的. 2. ...