有了jpg读取的经验和tfrecord写入的经验之后,开始尝试把jpg图像写入到tfrecord,另外还想尝试从tfrecord文件读出jpg图像

上示例把jpg的图片的二进制以及长和宽的信息保存进tfrecord

decode_jpeg_data = tf.placeholder(dtype=tf.string)
decode_jpeg = tf.image.decode_jpeg(decode_jpeg_data, channels=3)tfrecords_filename = './tfrecords'
writer = tf.python_io.TFRecordWriter(tfrecords_filename) # 创建.tfrecord文件,准备写入image_data = tf.gfile.FastGFile("C:/Users/shenwei/Desktop/timg.jpg", 'rb').read()
print(type(image_data))
with tf.Session() as sess:image = sess.run(decode_jpeg,feed_dict={decode_jpeg_data: image_data})print(image.shape[0])print(image.shape[1])example = tf.train.Example(features=tf.train.Features(feature={'encoded': tf.train.Feature(bytes_list = tf.train.BytesList(value=[image_data])) ,'height': tf.train.Feature(int64_list = tf.train.Int64List(value = [image.shape[0]])),'width': tf.train.Feature(int64_list = tf.train.Int64List(value = [image.shape[1]])),}))writer.write(example.SerializeToString()) writer.close()

********************上一段完整的保存以及读取的示例********************

参考https://blog.csdn.net/MOU_IT/article/details/82773839

slim = tf.contrib.slim # 创建TFrecord文件
def create_record_file():train_filename = "train.tfrecords"if os.path.exists(train_filename):os.remove(train_filename)# 创建.tfrecord文件,准备写入writer = tf.python_io.TFRecordWriter('./'+train_filename)with tf.Session() as sess:for i in range(10):  img_raw = tf.gfile.FastGFile("C:/Users/shenwei/Desktop/test/"+str(i)+".jpg", 'rb').read()decode_data = tf.image.decode_jpeg(img_raw)image_shape= decode_data.eval().shapeexample = tf.train.Example(features=tf.train.Features(feature={'image/encoded':tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])),'image/format':tf.train.Feature(bytes_list = tf.train.BytesList(value=[b'jpg'])),'image/width':tf.train.Feature(int64_list = tf.train.Int64List(value=[image_shape[1]])), 'image/height':tf.train.Feature(int64_list = tf.train.Int64List(value=[image_shape[0]])),'image/label':tf.train.Feature(int64_list = tf.train.Int64List(value=[i])),               }))writer.write(example.SerializeToString())  # 序列化保存writer.close()print ("保存tfrecord文件成功。")# 使用Slim的方法从TFrecord文件中读取
def read_record_file():    tfrecords_filename = "train.tfrecords"  # 将tf.train.Example反序列化成存储之前的格式。由tf完成keys_to_features = {'image/encoded': tf.FixedLenFeature((), tf.string, default_value=''),'image/format': tf.FixedLenFeature((), tf.string, default_value='jpeg'),'image/width': tf.FixedLenFeature((), tf.int64, default_value=0),'image/height': tf.FixedLenFeature((), tf.int64, default_value=0),'image/label': tf.FixedLenFeature((), tf.int64, default_value=0),}# 将反序列化的数据组装成更高级的格式。由slim完成items_to_handlers = {'image': slim.tfexample_decoder.Image(image_key='image/encoded',format_key='image/format',channels=3),'label': slim.tfexample_decoder.Tensor('image/label'),'height': slim.tfexample_decoder.Tensor('image/height'),'width': slim.tfexample_decoder.Tensor('image/width')}# 定义解码器,进行解码decoder = slim.tfexample_decoder.TFExampleDecoder(keys_to_features, items_to_handlers)# 定义dataset,该对象定义了数据集的文件位置,解码方式等元信息dataset = slim.dataset.Dataset(data_sources=tfrecords_filename,reader=tf.TFRecordReader,decoder=decoder,num_samples=10,        # 训练数据的总数items_to_descriptions=None,num_classes=10,)#使用provider对象根据dataset信息读取数据provider = slim.dataset_data_provider.DatasetDataProvider(dataset,num_readers=1,common_queue_capacity=20,common_queue_min=1)# 获取数据[image, label,height,width] = provider.get(['image', 'label','height','width'])    with tf.Session() as sess:init_op = tf.global_variables_initializer()sess.run(init_op)coord=tf.train.Coordinator()threads= tf.train.start_queue_runners(coord=coord)for i in range(10):img,l,h,w= sess.run([image,label,height,width])        #img = tf.reshape(img, [h,w,3]) print (img.shape)       #img=Image.fromarray(img.eval(), 'RGB')       # 这里将narray转为Image类,Image转narray:a=np.array(img)#img.save('./'+str(l)+'.jpg')                 # 保存图片coord.request_stop()coord.join(threads)   if __name__ == '__main__':#create_record_file()read_record_file()

tensorflow之读取jpg图像保存为tfrecord再读取相关推荐

  1. 计算机视觉__基本图像操作(显示、读取、保存)

    计算机视觉__基本图像操作(显示.读取.保存) 本文目录: ✨ 一.前言 ✨ 二.图像显示(使用OpenCV和Matplotlib显示图像) (1).使用OpenCV显示图像 (2).使用Matplo ...

  2. python如何读取tfrecord_tensorflow将图片保存为tfrecord和tfrecord的读取方式

    tensorflow官方提供了3种方法来读取数据: 预加载数据(preloaded data):在TensorFlow图中定义常量或变量来保存所有的数据,适用于数据量不太大的情况.填充数据(feedi ...

  3. tensorflow进阶笔记 --- #3# --- 关于怎么在TFrecord中存储图像的array

    TFrecord是一个Google提供的用于深度学习的数据格式,个人觉得很方便规范,值得学习.本文主要讲的是怎么存储array,别的数据存储较为简单,举一反三就行. 在TFrecord中的数据都需要进 ...

  4. java解析tfrecord_tensorflow将图片保存为tfrecord和tfrecord的读取方式

    tensorflow官方提供了3种方法来读取数据: 预加载数据(preloaded data):在TensorFlow图中定义常量或变量来保存所有的数据,适用于数据量不太大的情况.填充数据(feedi ...

  5. tensorflow之读取jpg图像长和宽

    有时需要读取jpg图像的长和宽,tensorflow提供了很好的支持 直接上示例 decode_jpeg_data = tf.placeholder(dtype=tf.string) decode_j ...

  6. opencv入门基础——图像读取,图像显示,图像保存

    一,图像读取 如上图所示,从文件中导入图像用这个函数 retval=cv.imread(文件名,[,显示控制参数]) 显示控制参数,主要是这几个: cv.IMREAD_UNCHANGED cv.IMR ...

  7. opencv C艹:读取视频文件,保存图像,视频文件,读取保存XML YAML文件

    <opencv4快速入门> 认识认识模块 D:\opencv\build\include\opencv2 路径下 calib3d 主要包含相机标定,立体视觉的功能:物体姿势估计,三维重建, ...

  8. python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹

    参考文章1:opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作 参考文章2:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 ...

  9. TensorFlow详解猫狗识别(一)--读取自己的数据集

    数据集下载 链接: https://pan.baidu.com/s/1SlNAPf3NbgPyf93XluM7Fg 密码: hpn4 数据集分别有12500张cat,12500张dog 读取数据集 数 ...

最新文章

  1. ResNets王者回归!谷歌、伯克利联合发文:它当初输给EfficientNets不是架构问题...
  2. SAP QM初阶之QS26 - Where-Used List for Master Insp. Characteristic
  3. 在ECS上使用Windows “跨区卷”、“条带卷”讨论以及扩容操作
  4. 【Python】for 循环倒叙遍历
  5. [转]ASP.NET会话(Session)保存模式
  6. netty springmvc_springmvc源码架构解析之HandlerMapping
  7. maven(6)仓库
  8. oracle字体加粗函数_Oracle日期操作函数
  9. java中fileter用法,Java 8 使用Lambda表达式的FileFilter示例
  10. 前端白屏问题_记一次白屏统计与修理
  11. 黑马程序员--java基础加强之内省(IntroSpector)
  12. c语言c99和c90,C89 / C90,C99和C11的兼容性
  13. 听华应龙的课我会用计算机吗体会,听华应龙老师课有感
  14. 敏捷开发产品管理系列之四:新产品研发
  15. 车型识别API调用对比
  16. RFC1661中文 ppp协议
  17. 深度学习(Deep Learning)
  18. php文件如何上传到服务器,php文件怎么上传到云服务器
  19. golang进程启动及监控
  20. 系统流量变化的原因与微型气泵的关系

热门文章

  1. Quartus II调用modelsim ALTEA 的软件使用及问题
  2. 使用QT + cocos2dx制作工具
  3. C#程序员66个编码好习惯
  4. 基于ARP协议获取局域网内主机MAC地址
  5. web开发 DIV+CSS规范命名集合
  6. Kaldi AMI数据集脚本学习7---train_deltas.sh
  7. linux pv命令,pv命令 – 管道查看器
  8. pandas数据处理实践四(时间序列date_range、数据分箱cut、分组技术GroupBy)
  9. zynq 和fpga区别_FPGA复位的正确打开方式
  10. html段落排版,美化网页段落排版的css教程