tensorflow 中图像的读取

Posted 梦·想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow 中图像的读取相关的知识,希望对你有一定的参考价值。

1. 使用gfile读入文件内容。输入的是String,输出3-D tensor。可惜的是输入不能是tensor

def decode_jpg(path):
    r""" 读取jpg图像

    :param path: full path
    :return: A `Tensor` of type `float32`. 3-D with shape `[height, width, channels]`
    """
    image_raw_data = tf.gfile.FastGFile(path, "r").read()
    image = tf.image.decode_jpeg(image_raw_data)
    image = tf.image.convert_image_dtype(image, dtype=tf.float32)
    return image

2. 使用WholeFileReader。输入的是queue。

image_reader = tf.WholeFileReader()
data_queue = tf.train.string_input_producer([image_dir], shuffle=False)
image_key, image_value = image_reader.read(data_queue)
img
= tf.image.decode_jpeg(image_value, channels=3)

3. 使用read_file。输入的是tensor,不是queue

image_value = tf.read_file(image_dir)
img = tf.image.decode_jpeg(image_value, channels=3)

4. 一个错误:一个csv中每行保存图像的地址和label结果。最初的读入方法是:

    data_queue = tf.train.string_input_producer([data_dir], shuffle=False)
    reader = tf.TextLineReader(skip_header_lines=True)
    key, value = reader.read(data_queue)
    record_defaults = [[2], [label], [157], [81], [Path]]
    _, label, width, height, image_dir = tf.decode_csv(value, record_defaults, field_delim="\t")
    image_dir = tf.string_join([image_folder_dir, image_dir])
    
    img_reader = tf.WholeFileReader()
    img_key,img_value = img_reader.reader(tf.train.string_input_producer([image_dir], shuffle=False)

因为当时没有发现read_file这种方法读取文件。所以先后使用了两次 string_input_producer。本以为第二次只传入一个image_dir,图像数据和label会一致。但是即使把shuffle设置为false, 图像和label也对不上了。

所以把后来的 WholeFileReader换成了tf.read_file(image_dir) 。这就可以了

 

以上是关于tensorflow 中图像的读取的主要内容,如果未能解决你的问题,请参考以下文章

无法读取 C 中图像的所有字节 [重复]

MATLAB中图像的基本操作

OpenCV中图像的读取,显示与保存

如何使用php读取docx文件中图像的超链接以及页眉和页脚的内容?

Qt中图像的显示与基本操作

将反应项目部署到 github 页面面临公共文件夹中图像的问题