可以在imread中使用变量名吗?Python中的基本问题
我的问题其实很简单 我的计算机上有100个图像,这些图像称为1.ppm 2.ppm,依此类推直到100.ppm 我想使用imread将每个图像读取到一个变量,然后执行一些操作。我想对所有的图像做完全相同的事情 我的问题是-不需要一百次的复制粘贴,可以在循环中使用imread吗?比如:可以在imread中使用变量名吗?Python中的基本问题,python,loops,numpy,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') 我不想复制粘贴同一个代码块,而只是将图片编号更改一百次
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)
?如下所示:
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')
请继续阅读上的文章以及上的这篇简单文章。如果我正确理解您的要求,可以这样做:
for i in range(1, 101):
x = io.imread('/home/oria/Desktop/more pics/' + str(i) + '.ppm')
请注意,
range
函数的高端不包括在内,因此使用range(1100)
只会产生1,2,3…99。还请注意,必须将i
转换为字符串,否则您将收到TypeError:无法连接'str'和'int'对象
只需使用str.format
,传递变量i
:
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
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))
我懂了。这与numpy.load和numpy.save的工作方式相同吗?是的,这是字符串格式。继续读这篇文章:你给我的第二个解决方案不起作用。它说“不能将'int'对象隐式转换为str”奇怪?我肯定是Python干的。。可以在str()中包装int。我已经更新了我的答案