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格式并回转的更多相关文章

  1. 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频

    /************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...

  2. 将序列化成json格式的日期(毫秒数)转成日期格式

    <script> $(function () { loadInfo(); }) function loadInfo() { $.post("InfoList.ashx" ...

  3. 把硬盘格式化成ext格式的cpu占用率就下来了

    把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...

  4. RGB格式图像转化为HSV格式

    注:在阴影检测算法中经常需要将RGB格式的图像转化为HSV格式,对于阴影区域而言,它的色度和饱和度相对于原图像而言变化不大,主要是亮度信息变化较大,,将RGB格式转化为HSV格式,就可以得到H.S.V ...

  5. (K)ubuntu上将分区格式化成NTFS格式

    新买了硬盘,装系统时,为Windows预留了几个分区,由于没有其他选择,因此将分区格式化成了fat32格式.装完系统后,总是很纠结,想把这些分区格式化成NTFS格式. google了一下,从这个网址( ...

  6. html中canvas渲染图片,并转化成base64格式保存

    最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取 ...

  7. 深度学习tensorflow实战笔记(2)图像转换成tfrecords和读取

    1.准备数据 首选将自己的图像数据分类分别放在不同的文件夹下,比如新建data文件夹,data文件夹下分别存放up和low文件夹,up和low文件夹下存放对应的图像数据.也可以把up和low文件夹换成 ...

  8. 将序列化成json格式后日期(毫秒数)转成日期格式

    System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaS ...

  9. c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变

    c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...

随机推荐

  1. python2.7安装

    下载地址:https://www.python.org/downloads/release/python-2716/ 尽量使用VPN,不然会很慢 安装后需要配置环境变量

  2. leecode第五百五十七题(反转字符串中的单词 III)

    class Solution { public: string reverseWords(string s) { string res; stack<char> sta; string:: ...

  3. c#格林治时间实现

    C#时间戳的简单实现   Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北 ...

  4. Android系统下app测试功能点

    一.安装卸载 1.验证app能否正常的安装启动运行,安装后的文件夹及文件是否写到了指定的目录里,卸载后相关文件是否清除 2.软件安装/卸载过程中意外情况的处理是否符合需求(如死机,重启,断电) 3.安 ...

  5. 448. Find All Numbers Disappeared in an Array&&645. Set Mismatch

    题目: 448. Find All Numbers Disappeared in an Array Given an array of integers where 1 ≤ a[i] ≤ n (n = ...

  6. [springMvc] 源码分析笔记(一)

    1. Servlet 结构图 2. servlet接口 public interface Servlet { //init方法在容器启动时被容器调用(当load-on-startup设置为负数或者不设 ...

  7. 个人信息——头像更换(拍照或相册上传)~ 微信小程序

    微信小程序中 在用户信息中关于用户头像更换(拍照或相册上传)功能实现. 图像点击触发事件: <image src='{{personImage}}' bindtap='changeAvatar' ...

  8. Python----unittest discover()方法与执行顺序

    一.Unittest discover()可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,让整体结构更加清晰一般是通过 ...

  9. Json 数组传值

    1. var _content = {}; _content[_title] = _oldValue + ' -- > ' + statusVal; 2. var eventData = { T ...

  10. call apply bind的区别

    都是天生自带的内置方法(Function.prototype),所有的函数都可以调取这三个方法,改变this指向 call 语法:fn.call(context,para1......) 把fn方法执 ...