初探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多重继承实例
Oct 11 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
python实时监控cpu小工具
Jun 21 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
Pytorch转onnx、torchscript方式
May 25 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
Python进行特征提取的示例代码
Oct 15 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
如何过滤高亮显示非法字符
2006/10/09 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
javascript实现下拉菜单效果
2021/02/09 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
Python单例模式实例分析
2015/01/14 Python
Python的Django框架使用入门指引
2015/04/15 Python
Python实现单词拼写检查
2015/04/25 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
pytorch构建多模型实例
2020/01/15 Python
PyTorch安装与基本使用详解
2020/08/31 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
学生自我鉴定模板
2013/12/30 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
律师函格式范本
2015/05/27 职场文书
让世界充满爱观后感
2015/06/10 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers