使用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)
推荐阅读