1.讀取文件列表api
#文件保存目錄 path='./data/iamge' file_names=os.listdir(path) file_list=[os.path.join(path,file_name)for file_name in file_names]
2.建立文件讀取隊列線程
file_queue=tf.train.string_inpurt_producer(file_list)
3.建立圖片閱讀器讀取圖片code
reader=tf.WholeFileReader() key,value=reader.read(file_queue)
4.解析圖片隊列
image=tf.image.decode_jpeg(value)
5.設置圖片大小,固定圖片通道圖片
image_resize=tf.image.image_resize(image,[200,200]) image_resize.set_shape([200,200,3])
6.批處理ci
tf.train.batch([image_resize],batch_size=20,num_threads=2,capacity=20)
7.開啓會話處理input
with tf.Session() as sess: coord=tf.train.Coordinator() threads=tf.train.start_queue_runners(sess,coord=coord) print(sess.run(batch_image)) coord.request_stop() coord.join()
完整代碼string
import tensorflow as tf import os def Image_reader(image_list): # 讀取文件導隊列 image_queue = tf.train.string_input_producer(image_list) # 構建文件閱讀器,使用tf.WholeFileReader()api reader = tf.WholeFileReader() key, value = reader.read(image_queue) # 解碼 image = tf.image.decode_jpeg(value) # 處理圖片大小 image_resize = tf.image.resize_images(image, [200, 200]) # 固定圖片矩陣大小 image_resize.set_shape([200, 200, 3]) # 進行批處理 batch_image = tf.train.batch([image_resize], batch_size=20, num_threads=4, capacity=20) return batch_image if __name__ == '__main__': # 讀取文件 path = './data/image' file_names = os.listdir(path) file_list = [os.path.join(path, filename) for filename in file_names] batch_image = Image_reader(file_list) # 開啓會話 with tf.Session() as sess: # 開啓線程協調器 coord = tf.train.Coordinator() # 開啓線程進行處理 threads = tf.train.start_queue_runners(sess, coord=coord) print(sess.run(batch_image)) # 中止線程 coord.request_stop() coord.join(threads)