【问题标题】:How to load the sequence of image in python? [closed]如何在python中加载图像序列? [关闭]
【发布时间】:2021-12-22 14:54:15
【问题描述】:
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。

【问题讨论】:

  • import 仅用于加载带有代码的模块,而不是图像。
  • 使用os.listdir(directory)获取目录中的所有文件名,并使用for-loop创建每个文件的完整路径os.path.join( directory, filename)并加载每个文件。您可以将它们保留在列表中。
  • 如果您知道名称,那么您可以使用带有值 0...999for-loop 并使用 string formattingf-string 来创建文件名。

标签: python arrays python-3.x list python-2.7


【解决方案1】:

在所有情况下,您都需要for-loop。

如果您不知道名称,那么您可以使用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 )

如果还有其他文件/文件夹,那么每个版本都可能需要一些if/else 来过滤文件/文件夹


还有模块glob可以使用*匹配很多文件/文件夹

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

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

【讨论】:

  • 非常感谢。这是一个非常详细的回应。 _` import cv2 import numpy as np import os, sys from PIL import Image import glob all_images = [] folder = "C:/Users/Vims/Desktop/7th sem/ISA/Lab_1/sequence/sequence" for filename in sorted(os.listdir(folder)): full_path = os.path.join(folder, filename) img = Image.open(full_path) all_images.append( img ) img.show(img)` _ How只在一个窗口或选项卡中打开?每次打开新选项卡或窗口时。我想制作视频,因为它是一系列图像。
  • 如果你使用cv2,那么你应该在cv2的每个教程中看到它 - 使用cv2.imshow(window_name, img)(和cv2.waitKey(0)),它总是会在同一个窗口中打开(如果你总是使用相同的window_name)。然后你还应该使用cv2 来加载图像。或者您必须将Pillow.Image 转换为numpy.array 并将颜色RGB 转换为BGR
  • 如果你有新问题,那么你应该在 nee 页面上创建新问题 - 你将有新的空间用于代码和描述,并且代码将更具可读性。
  • FileNotFoundError: [Errno 2] 没有这样的文件或目录:'C:/Users/Vims/Desktop/7th sem/ISA/Lab_1/sequence/sequence\\S1-T1-C.00000'这个错误是什么意思?我该如何纠正它?
  • 错误意味着它找不到这个文件 - 也许你不应该混合 / 和 \\ 。或者,也许您创建它的原因是错误的。磁盘上真的有sequence/sequence 吗?也许你应该只有一个sequence 在路径中。
猜你喜欢
  • 2014-11-03
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多