欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用tensorflow读取图片数据

程序员文章站 2022-03-20 14:40:52
...
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
"""
读取图片数据,一张一张图片的读取
"""


def imageRead(imagelist):
    """
    读取图片类型数据,默认一张一张的读取
    :param imagelist:图片列表
    :return:批处理读取的图片数据
    """
    # 1.获取图片读取队列
    image_queue = tf.train.string_input_producer(imagelist)
    # 2.获取图片阅读器,read数据
    reader = tf.WholeFileReader()
    # key 为读取的图片名称 value为图片样本数据
    key, value = reader.read(image_queue)
    print(value)
    # 3.图片数据解码decode
    image = tf.image.decode_jpeg(value)
    print(image)
    # 4.对图片数据处理
    # 图片大小缩放一样大
    image_resize = tf.image.resize_images(image, [200, 200])
    print(image_resize)
    # 固定图片的形状
    image_resize.set_shape([200, 200, 3])
    print(image_resize)
    # 5.批处理读取图片
    image_batch = tf.train.batch([image_resize], batch_size=10, num_threads=1, capacity=10)
    print(image_batch)
    return image_batch


if __name__ == '__main__':

    # "./data/image/" 文图片放入的文件夹
    images = os.listdir("./data/image/")

    imagelist = [os.path.join("./data/image/", image) for image in images]

    image_batch = imageRead(imagelist)

    with tf.Session() as sess:
        # 获取线程协调器
        coord = tf.train.Coordinator()
        # 获取图中所有的线程队列,然后开启
        threads = tf.train.start_queue_runners(sess, coord=coord)

        print(sess.run(image_batch))

        coord.request_stop()
        # 关闭线程队列
        coord.join(threads)