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. Ubuntu如何启用root用户登录

    默认安装Ubuntu都是不允许以root用户进行登录的,想要以root用户进行登录需要进行一些操作,主要是以下几个步骤: 第一步 在终端输入命令:sudo passwd root 以普通用户登录系统, ...

  2. vue v-if:"TypeError: Cannot read property 'length' of undefined"

    在使用v-if判断一个数组大小为0时,会出现 length 是undefined的错误:[Vue warn]: Error in render: "TypeError: Cannot rea ...

  3. myeclipse编码问题

    在中文操作系统中,Eclipse中的Java类型文件的编码的默认设置是GBK, 但是对Properties资源文件的编码的默认设置是ISO-8859-1. 所以编辑Java文件中的中文不会出现问题,但 ...

  4. CocosCreator 小知识

    最近在自学creator,有些小坑和解决方案,想记录下来: 1. 防止点击穿透 场景:在游戏界面有功能按钮,上层弹出layer之后,加入了遮罩,但是游戏界面的功能按钮还可以点击,穿透了! 方案1:遮罩 ...

  5. 初学者易上手的SSH-hibernate04 一对一 一对多 多对多

    这章我们就来学习下hibernate的关系关联,即一对一(one-to-one),一对多(one-to-many),多对多(many-to-many).这章也将是hibernate的最后一章了,用于初 ...

  6. C# 封装SDK 获取摄像头的水平角度和垂直角度

    最近需要做一个C#版本的控制终端,控制摄像头,获取摄像头的水平角度和垂直角度 获取当前摄像头的角度,需要调用一个名为NET_DVR_GetDVRConfig的bool类型的函数 在C++中,函数定义: ...

  7. Python自学:第三章 动手试一试 3-4、3-5

    # -*- coding: GBK -*- liebiao = ["zhang", "li", "wang", "zhou&quo ...

  8. 配置Spring MVC - 2019

    未完 软件环境:Eclipse-EE 1. 创建Maven Project 2. pom.xml - [更新日期19/03/31] <dependencies> <dependenc ...

  9. 在命令行启动vscode

    1.windows使用 code . 命令打开vscode 1.打开vscode安装位置,进入bin文件夹,复制路径 eg:E:\Microsoft VS Code\bin:2.回到桌面,右键我的电脑 ...

  10. vue-quill-editor富文本编辑器,上传图片自定义为借口上传

    vue-quill-editor富文本编辑器,上传图片自定义为借口上传 博客地址:https://blog.csdn.net/lyj2018gyq/article/details/82585194