图片文件读取
"""读取图片,name="13.py". * 在线程中读取 步骤: 1.构建图片文件队列:file_queue = tf.train.string_input_producer(filelist) 2.创建图片文件阅读器:reader=tf.WholeFileReader(filelist) 3.读取图片文件内容:key,value=reader.read(file_queue) 图片的基本知识: * 图片三要素:高,宽,通道数,张量表示:[height,width,channels] (黑白图片==>单通道(灰度值:[0~255]) 彩色图片==> 三通道[Red,Green,Blue]) 图片前期处理的目的: * 增加图片数据的统一性 * 所有图片转化成指定大小 * 缩小图片数据量防止增加开销 图像处理API: 1.缩小图片:tf.image.resize_images(images, size) images:* 4D形状[batch, height, width, channels] * 或3D形状的张量[height, width, channels]的图片数据 size:[new_height, new_width] (图像的新尺寸,1D的int32张量) 2.图像读取器: reader=tf.WholeFileReader():将文件的全部内容作为值输出的读取器 key,value=reader.read(file_queue) 3.图像解码器(根据不同图片进行选择): * tf.image.decode_jpeg(contents):将JPEG编码的图像解码为uint8张量 返回:uint8张量,3D形状[height, width, channels] * tf.image.decode_png(contents):将PNG编码的图像解码为uint8或uint16张量 返回:张量类型,3D形状[height, width, channels] """
import tensorflow as tf
import os
def IMG_read(filelist):
"""创建一个图片队列"""
file_queue = tf.train.string_input_producer(filelist)
"""创建图片文件阅读器"""
reader = tf.WholeFileReader()
"""读取图片文件内容"""
key, value = reader.read(file_queue)
"""进行图片内容解码"""
image = tf.image.decode_jpeg(value)
"""调整图片大小"""
image_resize = tf.image.resize_images(image, [200, 200])
"""确定通道数"""
image_resize.set_shape([200, 200, 3])
"""进行批处理"""
image_batch = tf.train.batch(
[image_resize], batch_size=5, num_threads=2, capacity=32)
return image_batch
if __name__ == "__main__":
"""获取图片文件的文件名"""
filename = os.listdir("./model/13_IMG/")
print(filename)
"""给图片文件添加路径"""
filelist = [os.path.join("./model/13_IMG/", file)
for file in filename] # 为CSV文件添加路径
print(filelist)
"""将样本编码成tensor,并返回某个样本"""
image_batch = IMG_read(filelist)
with tf.Session() as sess:
"""开启线程管理器"""
coord = tf.train.Coordinator()
"""开始读文本线程"""
thread = tf.train.start_queue_runners(sess, coord=coord, start=True)
print(sess.run(image_batch))
"""停止子线程,回收线程资源"""
coord.request_stop() # 停止子线程
coord.join(thread) # 回收子线程