我的问题非常简单。
我的计算机上有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)
?
答案 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))