初探TensorFLow从文件读取图片的四种方式


Posted in Python onFebruary 06, 2018

本文记录一下TensorFLow的几种图片读取方法,官方文档有较为全面的介绍。

1.使用gfile读图片,decode输出是Tensor,eval后是ndarray

import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

print(tf.__version__)

image_raw = tf.gfile.FastGFile('test/a.jpg','rb').read()  #bytes
img = tf.image.decode_jpeg(image_raw) #Tensor
#img2 = tf.image.convert_image_dtype(img, dtype = tf.uint8)

with tf.Session() as sess:
  print(type(image_raw)) # bytes
  print(type(img)) # Tensor
  #print(type(img2))

  print(type(img.eval())) # ndarray !!!
  print(img.eval().shape)
  print(img.eval().dtype)

#  print(type(img2.eval()))
#  print(img2.eval().shape)
#  print(img2.eval().dtype)
  plt.figure(1)
  plt.imshow(img.eval())
  plt.show()

输出为:

1.3.0
<class 'bytes'>
<class 'tensorflow.python.framework.ops.Tensor'>
<class 'numpy.ndarray'>
(666, 1000, 3)
uint8
图片显示(略)

2.使用WholeFileReader输入queue,decode输出是Tensor,eval后是ndarray

import tensorflow as tf
import os
import matplotlib.pyplot as plt
def file_name(file_dir):  #来自https://3water.com/article/134543.htm
  for root, dirs, files in os.walk(file_dir): #模块os中的walk()函数遍历文件夹下所有的文件
    print(root) #当前目录路径 
    print(dirs) #当前路径下所有子目录 
    print(files) #当前路径下所有非目录子文件 

def file_name2(file_dir):  #特定类型的文件
  L=[]  
  for root, dirs, files in os.walk(file_dir): 
    for file in files: 
      if os.path.splitext(file)[1] == '.jpg':  
        L.append(os.path.join(root, file)) 
  return L 

path = file_name2('test')


#以下参考https://3water.com/article/134547.htm (十图详解TensorFlow数据读取机制)
#path2 = tf.train.match_filenames_once(path)
file_queue = tf.train.string_input_producer(path, shuffle=True, num_epochs=2) #创建输入队列 
image_reader = tf.WholeFileReader() 
key, image = image_reader.read(file_queue) 
image = tf.image.decode_jpeg(image) 

with tf.Session() as sess: 
#  coord = tf.train.Coordinator() #协同启动的线程 
#  threads = tf.train.start_queue_runners(sess=sess, coord=coord) #启动线程运行队列 
#  coord.request_stop() #停止所有的线程 
#  coord.join(threads) 

  tf.local_variables_initializer().run()
  threads = tf.train.start_queue_runners(sess=sess)

  #print (type(image)) 
  #print (type(image.eval())) 
  #print(image.eval().shape)
  for _ in path+path:
    plt.figure
    plt.imshow(image.eval())
    plt.show()

3.使用read_file,decode输出是Tensor,eval后是ndarray

import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

print(tf.__version__)

image_value = tf.read_file('test/a.jpg')
img = tf.image.decode_jpeg(image_value, channels=3)

with tf.Session() as sess:
  print(type(image_value)) # bytes
  print(type(img)) # Tensor
  #print(type(img2))

  print(type(img.eval())) # ndarray !!!
  print(img.eval().shape)
  print(img.eval().dtype)

#  print(type(img2.eval()))
#  print(img2.eval().shape)
#  print(img2.eval().dtype)
  plt.figure(1)
  plt.imshow(img.eval())
  plt.show()

输出是:

1.3.0
<class 'tensorflow.python.framework.ops.Tensor'>
<class 'tensorflow.python.framework.ops.Tensor'>
<class 'numpy.ndarray'>
(666, 1000, 3)
uint8
显示图片(略)

4.TFRecords:

有空再看。

如果图片是根据分类放在不同的文件夹下,那么可以直接使用如下代码:
https://3water.com/article/134532.htm
https://3water.com/article/134539.htm

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
python制作一个桌面便签软件
Aug 09 Python
Python语言的变量认识及操作方法
Feb 11 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python和opencv实现抠图
Jul 18 Python
Python实现计算对象的内存大小示例
Jul 10 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
Django 框架模型操作入门教程
Nov 05 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 #Python
Python实现matplotlib显示中文的方法详解
Feb 06 #Python
Python实现自动上京东抢手机
Feb 06 #Python
Python获取指定文件夹下的文件名的方法
Feb 06 #Python
TensorFlow如何实现反向传播
Feb 06 #Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 #Python
TensorFlow实现创建分类器
Feb 06 #Python
You might like
用header 发送cookie的php代码
2007/03/16 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
php文件上传的两种实现方法
2016/04/04 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
Python利用ansible分发处理任务
2015/08/04 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python 识别图片中的文字信息方法
2018/05/10 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
pygame实现打字游戏
2021/02/19 Python
如何使用python写截屏小工具
2020/09/29 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
给医务人员表扬信
2014/01/12 职场文书
社会学专业求职信
2014/02/24 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
高三学生评语大全
2014/04/25 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript