是否可以在imread中使用变量名? Python中的基本问题

时间:2015-07-29 10:27:55

标签: python loops numpy

我的问题非常简单。

我的计算机上有100张图像,这些图像称为1.ppm 2.ppm等,直到100.ppm

我想使用imread将每个图像读取到一个变量,然后执行一些操作。我想对所有图像做同样的事情。

我的问题是这个 - 而不是复制粘贴一百次,是否可以在循环中使用imread?类似的东西:

for i in range(1,100):
    X=io.imread('/home/oria/Desktop/more pics/'i'.ppm')

我希望在循环中执行此操作,而不是复制粘贴相同的代码块并仅更改图片编号一百次。 我和numpy.load有类似的问题。我想将名为ICA1 ICA2等的文件加载到ICA100。是否可以写出类似

的内容

numpy.load('/home/oria/Desktop/ICA DB/ICA'i'.npy)

4 个答案:

答案 0 :(得分:1)

像这样:

for i in range(1,100):
    X=io.imread('/home/oria/Desktop/more pics/%s.ppm' %(i))

或者,像这样:

for i in range(1,100):
    X=io.imread('/home/oria/Desktop/more pics/'+str(i)+'.ppm')

继续阅读basic string operations上的文章以及string formatting上的这篇简单文章

答案 1 :(得分:0)

如果我正确理解了您的要求,可以这样做:

for i in range(1, 101):
    x = io.imread('/home/oria/Desktop/more pics/' + str(i) + '.ppm')

请注意,range函数的高端不具有包容性,因此使用range(1, 100)只会生成1,2,3 ... 99。另请注意,i必须转换为字符串,否则您将收到TypeError: cannot concatenate 'str' and 'int' objects

答案 2 :(得分:0)

import cv2
import os

def load_images_from_folder(folder):
    images = []
    for filename in os.listdir(folder):
        img = cv2.imread(os.path.join(folder,filename))
        if img is not None:
            images.append(img)
    return images

答案 3 :(得分:0)

只需使用str.format,传递变量i

for i in range(1,100):
     X = io.imread('/home/oria/Desktop/more pics/{}.ppm'.format(i))

当你想用numpy加载时再做同样的事情:

for i in range(1,100):
    X = numpy.load('/home/oria/Desktop/ICA DB/ICA{}.npy'.format(i))