在Python中一起读取以特定单词开头的图像

时间:2016-07-05 08:44:17

标签: python

我要阅读很多图片。例如 300 图像,其名称为a1.jpga2.jpg,...,a100.jpgb1.jpg,...,{{1 },b100.jpgc1.jpg,...,c2.jpg。我想在循环中使用c100.jpg函数来查找以imread()开头的那些图像。

我正在使用此命令:

a

其中 * 提到以 a 开头的其余名称。我不知道怎么写这个?

5 个答案:

答案 0 :(得分:2)

它与imread本身无关。

鉴于您已经拥有文件名列表,您有几个选择:

  1. 使用filter仅以您想要的文件名结尾:

    relevant_files = filter(lambda name: name.startswith('a'), list_of_files)
    for file_name in relevant_files:
        im = misc.imread(file_name)
    
  2. 使用列表理解:

    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)
    
  3. 在阅读图片之前使用简单的if

    for i in train:
        if i.startswith('a'):
             im = misc.imread(i)
    
  4. 执行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.globos.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)

它应该工作。我希望它有所帮助。