import os
import cv2
import numpy as np
import tensorflow as tf
"""
将train文件夹下的cats和dog文件夹处理成train.tfrecords放在train文件夹里
"""
#将图片的路径和对应的标签存储在list中返回
def deal(dir):images = []temp = []for root,dirs,files in os.walk(dir):for name in files:images.append(os.path.join(root,name))for name in dirs:#以dogs cats文件夹形式读取
            temp.append(os.path.join(root,name))labels=[]for one_folder in temp:n_img=len(os.listdir(one_folder))#展开cats或者dogs的图片
        letter=one_folder.split('/')[-1]if letter=='cats':labels=np.append(labels,n_img*[0])#np.append拼接 0是cat 1是dog
        else:labels=np.append(labels,n_img*[1])#打乱
     temp=np.array([images,labels])temp=temp.transpose()np.random.shuffle(temp)image_list=list(temp[:,0])label_list=list(temp[:,1])label_list=[int(float(i)) for i in label_list]return image_list,label_list
#返回整形特征
def int64_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))
#返回bytes特征
def bytes_feature(value):return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def convert_to_tfrecord(image_list,label_list):n_samples=len(label_list)writer = tf.python_io.TFRecordWriter('./data/train/train.tfrecords')print('start transform')for i in range(n_samples):try:img=cv2.imread(image_list[i])img_raw = img.tobytes()  # 图片转化成二进制
            label=int(label_list[i])example=tf.train.Example(features=tf.train.Features(feature={'label':int64_feature(label),
                    'image':bytes_feature(img_raw)}))writer.write(example.SerializeToString())except:print(image_list[i])os.remove(image_list[i])writer.close()print('transform end')
"""
下面是读取tfrecord和显示图片证明生成的tfrecord正确
"""
filename='./data/train/train.tfrecords'
#读取并解析.tfrecords文件
def read_and_decode(filename):filename_queue=tf.train.string_input_producer([filename])# 按队列的形式读取
    reader=tf.TFRecordReader()_,serialized_example=reader.read(filename_queue)#返回文件名和文件
    features=tf.parse_single_example(serialized_example,
                            features={'label':tf.FixedLenFeature([],tf.int64),#与存储的类型一致
                                'image':tf.FixedLenFeature([],tf.string)})img=tf.decode_raw(features['image'],tf.uint8)img=tf.reshape(img,shape=[227,227,3])#img = tf.cast(img, dtype=tf.float32) * (1.0 / 128) - 0.5
    label = tf.cast(features['label'], dtype=tf.int32)return img,label
def show():img,label=read_and_decode(filename)img_batch,label_batch=tf.train.shuffle_batch([img,label],batch_size=1,
                                                 capacity=11,min_after_dequeue=5)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)threads=tf.train.start_queue_runners(sess=sess)for i in range(10):label=sess.run(label_batch)imgcv2=sess.run(img_batch)imgcv2.resize((227,227,3))print(label)cv2.imshow('img',imgcv2)cv2.waitKey()if __name__ == '__main__':# image_list, label_list = deal('./data/train')
    # convert_to_tfrecord(image_list,label_list)
    show()

实现TFrecords文件的保存与读取相关推荐

  1. csv文件的保存与读取

    csv文件的保存与读取 import numpy as npimport pandas as pd# 保存数据到csv文件m = np.arange(16).reshape((4,4))data = ...

  2. TFRecords文件的存储与读取

    将cats和dogs两个文件夹各1000张图片存储为:train.tfrecords #将图片文件生成train record import os import tensorflow as tf fr ...

  3. python:json文件的保存与读取

    介绍 json(JavaScript Object Notation, Java 脚本对象表示符)是一种特殊的数据格式,具有以下优点. (1)该数据格式独立于脚本语言(如c++,python,matl ...

  4. 实例教程三:文件的保存与读取

    使用代码嵌入android.os.SystemProperties的方法(转) http://www.eoeandroid.com/thread-206961-1-1.html Android网络连接 ...

  5. C# 文件的保存与读取

    1.保存文件到指定的textBox控件中 StreamWriter sw = new StreamWriter( "D:\\1.txt"); sw.WriteLine(this.t ...

  6. c#_文件的保存与读取

    本博客介绍在当前文件所在目录下创建文件: 1.设置路径 string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"Sa ...

  7. 自己动手写类似酷狗播放器(5)_文件的保存和读取

    对于播放器,我们希望在打开的时候,播放列表存有上一次的歌曲,不必每次去添加,就是通过文件的操作实现的. 这里要实现两个: 1.在播放器打开的时候,能自动加载上一次的歌曲信息进入Listbox,并且更新 ...

  8. python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解

    一.对json文件的读取 data1={"programmers":[{ "firstName": "Brett", "lastN ...

  9. 【OpenCV 4开发详解】保存和读取XML和YMAL文件

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

最新文章

  1. 皮一皮:只恨不为女儿身...
  2. java keygenerator_spring-cache -KeyGenerator自定义
  3. 部署SAP HANA之前你需要知道的那些事
  4. CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
  5. PHP面向对象分析设计的61条军规
  6. redis zset转set 反序列化失败_关于Redis中的五种数据结构,要知其然知其所以然...
  7. python中if name == main_python中if __name__ == '__main__': 的解析
  8. 7 Object类型
  9. 如何开启VMware串口
  10. Logistic回归分类器
  11. 如何php实现即时到账,paypal即时到账php实现代码-PHPphp技巧
  12. 浅析 微信公共平台消息 开发原理
  13. 值得收藏几个Web木马后门查杀扫描工具
  14. 农场周围的道路c语言编程,[蓝桥杯][2013年第四届真题]农场阳光 (C语言)
  15. office办公所有版本齐全
  16. 练习-任意输入n个从小到大的整数的数列,然后输入一个整数插入到数列中,使数列保持从小到大的顺序
  17. Linux-Logs 查看日志文件
  18. “Art-Side艺次元空间+”将携日中之间「龙天无界」联手“蒲公英高级文旅”与“馋艺术空间”赋能古镇
  19. 各类暴力事件频发,究竟是为何?
  20. 跨平台界面库 linux,超轻量/跨平台UI框架(目前已经支持: Windows, Android, Linux, VR)...

热门文章

  1. Attention模型:我的注意力跟你们人类不一样
  2. Google 资深软件工程师 LeetCode 刷题笔记首次公开
  3. 史上最简单的隐马尔可夫模型讲解
  4. 微服务技术发展的现状与展望
  5. BZOJ3064 CPU监控
  6. 【编程开发】Python---列表
  7. CF876 F 思维 枚举
  8. 如何把我的Java程序变成exe文件?
  9. 基于原版Hadoop的YDB部署(转)
  10. import-module的注意事项与NDK_MODULE_PATH的配置