Tensorflow 讀取圖片文件

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)
相關文章
相關標籤/搜索