如何按顺序浏览for循环中的图像

时间:2017-04-08 04:58:33

标签: python tensorflow

我有大约13000个图像需要按特定顺序通过python脚本运行。我尝试使用for循环,但是,它没有以正确的顺序浏览图像。包含这些图像的文件夹是按顺序排列的,但不一定是名称。我有一个包含文件名的csv文件。也许它可以读取csv文件以找到要迭代的文件?

我试图对多个图像进行分类,然后使用张量流,python,再训练图以及之前生成的各自标签将它们打印到csv。

import tensorflow as tf, sys
import csv
import numpy
import os

files_dir = os.getcwd() + '/Desktop/model/test_stg1/'
files = os.listdir(files_dir)

for f in files:
    if f.lower().endswith(('.png', '.jpg', '.jpeg')):
        image_path = files_dir + '/' + f


        image_data = tf.gfile.FastGFile(image_path, 'rb').read()


        label_lines = [line.rstrip() for line
                       in tf.gfile.GFile("/home/fly/Desktop/model/retrained_labels.txt")]


        with tf.gfile.FastGFile("/home/fly/Desktop/model/retrained_graph.pb", 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            _ = tf.import_graph_def(graph_def, name='')

        with tf.Session() as sess:

            softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')

            predictions = sess.run(softmax_tensor, \
                                   {'DecodeJpeg/contents:0': image_data})


            top_k = predictions[0].argsort()[-len(predictions[0]):][::-1]


            text_file = open("Outputtest2.csv", "a")
            for node_id in top_k:
                human_string = label_lines[node_id]
                score = predictions[0][node_id]
                print('%s (score = %.5f)' % (human_string, score))
                text_file.write('%s (%.5f),' % (human_string, score))

1 个答案:

答案 0 :(得分:1)

如果CSV中的文件列表按您希望的方式排序,您可以打开CSV [1]并使用它来迭代文件。例如:

with open('files_data_sorted.csv', 'r') as csvfile:
    filedatareader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in filedatareader:
        # let's suppose the filename is in column 0
        fname = row[0]
        image_path = files_dir + '/' + fname
        image_data = tf.gfile.FastGFile(image_path, 'rb').read()

或者,如果您按字母顺序排序文件,则只需运行files.sort()

即可

[1] https://docs.python.org/2/library/csv.html