如何通过Tensorflow Python导入多张图片

3

过去几天,我一直在尝试将桌面上的图像导入到Tensorflow中,但遇到了很多困难。我查看了API并搜索了一些在线教程,但我的运气一直不太好,我没有能够理解我所读到的内容。我尝试创建一个函数来从我所理解的内容中导入图像,但结果可想而知,不成功。以下是我到目前为止所做的。通过调试器运行后,我发现程序卡在第一行。Tensorflow API说我必须传递文件模式或文件模式的1D张量。那么我给出的文件路径不就是一个文件模式吗?

def import_data():

    image_path = tf.train.match_filenames_once("C:\Users\ratno\Desktop\honest chaos\*.JPG")
    filename_queue = tf.train.string_input_producer(image_path)

    reader = tf.WholeFileReader()

    _, content = reader.read(filename_queue)
    image = tf.image.decode_jpeg(content, channels=1)
    cropped_image = tf.image.resize_image_with_crop_or_pad(image, 3000, 3000)
    reduced_image = tf.image.resize_images(cropped_image, [100, 100])
    modified_image = tf.transpose(tf.reshape(reduced_image, [10000, 1]))

    return modified_image

该代码旨在从桌面文件夹中获取一系列jpg图像,并将它们从RGB jpg转换为灰度jpg。然后,它将获取灰度jpg,并将其裁剪为3000x3000像素大小,并使用tf.resize_images进一步缩小它们到100x100像素图像。最后,它将以1x10000形状的张量形式返回所有内容。
提前感谢您的支持。 如果对代码的其他部分有任何建议,我将不胜感激。
2个回答

1
def _parse_function(filename):
    image_string = tf.read_file(filename)
    image_decoded = tf.cond(
        tf.image.is_jpeg(image_string),
        lambda: tf.image.decode_jpeg(image_string, channels=3),
        lambda: tf.image.decode_png(image_string, channels=3))
    image_resized = tf.image.resize_images(image_decoded, [90, 90])
    return image_resized
filenames = ["/var/data/image1.jpg", "/var/data/image2.jpg", ...]
labels = [0, 37, 29, 1, ...]
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset = dataset.map(_parse_function)
dataset = dataset.batch(batch_size)
iterator = dataset.make_one_shot_iterator()

谢谢回复,这个函数能处理4000张图片吗? - QuarterShotofEspresso

1
要在一次session.run调用中读取多个图像,只需多次调用reader.read()。或者,在处理完后,可以调用tf.train.batch以获取一批图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接