如何加载python中的图像序列?

How to load the sequence of image in python?

import S1-T1-C.00000
Image.open('C:/Users/Vims/Desktop/7th sem/ISA/Lab_1/sequence/sequence')

我有一组图像序列或视频。我想加载 python 代码。我该怎么做?之后我将对图像进行背景减法。

图像序列从S1-T1-C.00000到S1-T1-C.00999.

在所有情况下你都需要 for-循环。

如果你不知道名字那么你可以使用 os.listdir(folder) 来获取文件夹中的所有文件名(你也可以使用 sorted() 让它们按正确的顺序排列)然后你必须阅读每个图像单独

all_images = []

folder = "C:/folder/with/images"

for filename in sorted(os.listdir(folder)):

    full_path = os.path.join(folder, filename)

    img = Image.open(full_path)
    all_images.append( img )

如果您知道文件名,那么您可以使用 string formattingf-string

all_images = []

folder = "C:/folder/with/images"

for number in range(0, 1_000):

    filename = f"S1-T1-C.{number:05}"
    full_path = os.path.join(folder, filename)

    img = Image.open(full_path)
    all_images.append( img )

顺便说一句:

如果您在多个文件夹中有图像,则可能需要嵌套 for-loops

all_images = []

base_folder = "C:/folder/with/images"

for foldername in os.listdir(base_folder):

    folder = os.path.join(base_folder, foldername) 

    for filename in sorted(os.listdir(folder)):

        full_path = os.path.join(folder, filename)

        img = Image.open(full_path)
        all_images.append( img )

如果可以有一些其他的 files/folders 那么每个版本可能需要一些 if/else 来过滤 files/folders


还有模块glob可以用*匹配多个files/folders

all_filenames = glob.glob("*/S1-T1-C.*")

for filename in all_filenames:
    # ... code ...