我要阅读很多图片。例如 300 图像,其名称为a1.jpg
,a2.jpg
,...,a100.jpg
,b1.jpg
,...,{{1 },b100.jpg
,c1.jpg
,...,c2.jpg
。我想在循环中使用c100.jpg
函数来查找以imread()
开头的那些图像。
我正在使用此命令:
a
其中 * 提到以 a 开头的其余名称。我不知道怎么写这个?
答案 0 :(得分:2)
它与imread
本身无关。
鉴于您已经拥有文件名列表,您有几个选择:
使用filter
仅以您想要的文件名结尾:
relevant_files = filter(lambda name: name.startswith('a'), list_of_files)
for file_name in relevant_files:
im = misc.imread(file_name)
使用列表理解:
relevant_files = [file_name for file_name in list_of_files if file_name.startswith('a')]
for file_name in relevant_files:
im = misc.imread(file_name)
在阅读图片之前使用简单的if
:
for i in train:
if i.startswith('a'):
im = misc.imread(i)
执行import glob
并在评论中使用@LaurentLAPORTE所示。
答案 1 :(得分:1)
这是一个使用iterools.groupby
>>> x = ['a1.jpg', 'a2.jpg', 'b1.jpg', 'b2.jpg']
>>> groups = itertools.groupby(x, lambda t:t[0])
>>> for key,l in groups:
... print (key)
... for j in l:
... print (" ",j)
...
a
(' ', 'a1.jpg')
(' ', 'a2.jpg')
b
(' ', 'b1.jpg')
(' ', 'b2.jpg')
可以使用glob.glob
或os.listdir
生成文件列表。
答案 2 :(得分:0)
快速&脏:
charToRead = 'a'
for i in range(100):
s = charToRead + str(i+1) + '.jpg'
print(s)
im=misc.imread(s)
答案 3 :(得分:0)
您可以先列出列表中的所有图像,然后循环显示它们。 假设,
a = ['a1.jpg', 'a2.jpg', 'a100.jpg','b10.jpg','c100.jpg']
matching = [s for s in a if s.startswith('a')]
匹配将是名称以“a”字符开头的所有图像的列表。
答案 4 :(得分:0)
如果您的所有图像都在同一个库中,您可以浏览此库中的所有文件名,检查它是否以a开头,如果是,则将其显示为imread。它会做如下:
import os
for file in os.listdir("/mydir"):
if file.endswith(".jpg") and file.startwith("a"):
im=misc.imread(file)
它应该工作。我希望它有所帮助。