首页 > 解决方案 > 从多个子目录读取多种数据类型的图像

问题描述

我想使用 glob 函数从 python 中的多个子目录中读取多种数据类型的图像

我已经成功地从子目录中读取了 JPG 类型的图像。想知道如何读取多种数据类型的图像。以下是我到目前为止尝试过的代码

###########READ IMAGES OF MULTIPLE DATATYPES from a SINGLE Folder######

    import os
    import glob

    files = []
    for ext in ('*.jpg', '*.jpeg'):
       files.extend(glob(join("C:\\Python35\\target_non_target\\test_images", ext)))
    count=0   

    for i in range(len(files)):
        image=cv2.imread(files[i])
        print(image)

###### READ MULTIPLE JPG IMAGS FROM MULTIPLE SUBDIRECTORIES#########

import os
import glob
from glob import glob

folders = glob("C:\\Python36\\videos\\videos_new\\*")

img_list = []
for folder in folders:
    for f in glob(folder+"/*.jpg"):
        img_list.append(f)

for i in range(len(img_list)):
    print(img_list[i])

两种代码都能完美运行,但我很困惑如何包含从多个子目录读取多个数据类型图像的行。我有一个包含多个子目录的目录,其中有多种数据类型的图像,如 JPG、PNG、JPEG 等。我想阅读所有这些图像并在我的代码中使用它们

标签: pythondirectoryglobsubdirectory

解决方案


尝试这个:

import glob
my_root = r'C:\Python36\videos\videos_new'
my_exts = ['*.jpg', 'jpeg', '*.png']
files = [glob.glob(my_root + '/**/'+ x, recursive=True) for x in my_exts]  

查看以了解递归搜索文件夹的各种方法。

另一方面,而不是这个:

for i in range(len(img_list)):  
    print(img_list[i])

使用 python 为简单、可读的 for 循环执行此操作:

for img in img_list:
    print(img)

推荐阅读