TensorFLow 读取图片1:初探四种从文件读取的方式
2017-09-07 17:27
671 查看
本文记录一下TensorFLow的几种图片读取方法,官方文档有较为全面的介绍。
1.使用gfile读图片,decode输出是Tensor,eval后是ndarray
输出为:
2.使用WholeFileReader输入queue,decode输出是Tensor,eval后是ndarray
3.使用read_file,decode输出是Tensor,eval后是ndarray
输出是:
4.TFRecords:
有空再看。
如果图片是根据分类放在不同的文件夹下,那么可以直接使用如下代码:
http://blog.csdn.net/u012759136/article/details/52232266
https://www.2cto.com/kf/201702/604326.html
需要稍微整理的话可以参考:
http://blog.csdn.net/hjxu2016/article/details/76165559
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): #来自http://blog.csdn.net/lsq2902101015/article/details/51305825 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') #以下参考http://blog.csdn.net/buptgshengod/article/details/72956846 (十图详解TensorFl b602 ow数据读取机制) #以及http://blog.csdn.net/uestc_c2_403/article/details/74435286 #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:
有空再看。
如果图片是根据分类放在不同的文件夹下,那么可以直接使用如下代码:
http://blog.csdn.net/u012759136/article/details/52232266
https://www.2cto.com/kf/201702/604326.html
需要稍微整理的话可以参考:
http://blog.csdn.net/hjxu2016/article/details/76165559
相关文章推荐
- 初探TensorFLow从文件读取图片的四种方式
- Spring Boot四种读取properties文件的方式
- tensorflow数据集制作/文件队列读取方式
- 文件读取的四种方式
- SpringBoot:四种读取properties文件的方式
- 通过以二进制方式读取文件 判断文件头得到图片类型 ,上面通过拓展名有缺陷。
- Android 如何以流的方式读取图片文件
- 分别以字节、字符、行、随机四种方式读取文件(Java文件操作)
- [转] 从数据库中读取图片并导入Excel文件,C#方式
- SpringBoot四种读取properties文件的方式
- Android 以流的方式读取服务器图片文件
- SpringBoot四种读取properties文件的方式
- java读取配置文件常用的四种方式
- 如何用Tensorflow训练模型成pb文件(一)——基于原始图片的读取
- SpringBoot项目实战:四种读取properties文件的方式
- java中四种读取文件方式
- Java基础——读取xml文件内容的四种方式
- winForm 读取pdf文件并,转换成图片
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- linux服务器之间传输文件的四种方式