当前位置: 首页 > 知识库问答 >
问题:

如何使用python将大型图像数据集划分为图片组并保存在子文件夹中?

乐正浩宕
2023-03-14

我有一个像这样的图像数据集:数据集

每个图像的时间步长为15分钟(如您所见,时间戳位于文件名中)。

现在我想将这些图像分组为3小时长的序列,并将这些序列保存在分别包含12张图像(=3小时)的子文件夹中。理想的结果是这样的:序列

我尝试使用os.walk和循环文件夹中保存的图像数据集,然后我使用熊猫创建了一个数据帧,因为我认为我可以更容易地处理文件,但我认为我完全偏离了目标。

共有2个答案

卢朝
2023-03-14

既然你说你只需要12个文件(考虑到时间戳对所有文件都是一样的,12是你需要的确切数字,下面的代码可以帮助你

import os
import shutil
output_location = "location where you want to save them" # better not to be in the same location with the dataset
dataset_path = "your data set"
files = [os.path.join(path, file) for path, subdirs, files in os.walk(dataset_path) for file in files]

nr_of_files = 0
folder_name = ""
for index in range(len(files)):
    if nr_of_files == 0:
        folder_name = os.path.join(output_location, files[index].split("\\")[-1].split(".")[0])
        os.mkdir(folder_name)
        shutil.copy(files[index], files[index].replace(dataset_path, folder_name))
        nr_of_files += 1
    elif nr_of_files == 11:
        shutil.copy(files[index], files[index].replace(dataset_path, folder_name))
        nr_of_files = 0
    else:
        shutil.copy(files[index], files[index].replace(dataset_path, folder_name))
        nr_of_files += 1

解释代码:
file获取dataset_path中所有文件的值。您设置此变量,文件将包含所有文件的整个路径。

用于对整个文件长度进行循环交互

使用nr\u文件对每12个文件进行计数。如果为0,它将创建一个名为files[index]的文件夹到您设置为输出的位置,并将复制该文件(将输入路径替换为输出路径)

如果是11(从0开始,index==11表示第12个文件),将复制该文件并将nr\u文件设置回0以创建另一个文件夹

最后一个else将简单地复制文件并增加文件的nr\u

万涵亮
2023-03-14

每个图像的时间步长为15分钟(如您所见,时间戳位于文件名中)。

现在,我想将这些图像分组为3hr长序列,并将这些序列保存在分别包含12个图像(=3hr)的子文件夹中

我建议利用datetime内置库来获得所需的结果,对于您拥有的每个文件

  1. 获取保存时间戳的子字符串
  2. 使用datetime.datetime.strtime将其解析datetime.datetime.strtime
  3. 使用.timestamp方法
  4. 计算秒数整数除法(/10800(3hr内的秒数)
  5. 将获得的值转换为str,并将其用作目标子文件夹名称
 类似资料:
  • 更新:通过使用这个链接,我得到了我的应用程序的最佳答案和性能。

  • 我需要在数据库中按kb保存大小,以便在前端查看,这是我正在使用的控制器。我使用的是Laravel 5.8 所以我的问题是,拉雷维尔是否提供了处理这种情况的任何假象?或者任何其他框架都有更适合问题的功能是什么?

  • 问题内容: 我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为。 所以假设: 我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http : //imageshack.us/f/32/776

  • 我正在尝试在netbeans的资源文件夹中保存一个图像文件,但我有问题找到资源文件夹的路径。 我的代码如下:

  • 我正在将图像保存到tar文件中,如下所示 < code>docker保存我的图像:最新 但是构建失败了。有人能帮我一下吗?如何在Dockerfile中发送tar文件?

  • 问题内容: 在我的应用程序中,我在div中有一个图像,一个按钮。 我想旋转显示的图像,并在使用jquery单击按钮时保存旋转的图像。 我已经使用了代码: http://code.google.com/p/jquery-rotate/ 和jQuery代码: html代码: 当我使用上述代码时,有两个图像,一个是旧图像,另一个是旋转图像。 在这里我想旋转相同的图像并仅显示旋转的图像。并将旋转的图像保存