从文件夹中的图像序列获取 numpy 数组

2024-02-21

我有一个文件夹,比如说video1一堆按顺序排列的图像frame_00.png, frame_01.png, ...

我想要的是格式为 4D numpy 数组(number of frames, w, h, 3)

这就是我所做的,但我认为它很慢,有没有更快或更有效的方法来实现同样的事情?

folder = "video1/"

import os
images = sorted(os.listdir(folder)) #["frame_00", "frame_01", "frame_02", ...]

from PIL import Image 
import numpy as np 

video_array = []
for image in images:
    im = Image.open(folder + image)
    video_array.append(np.asarray(im)) #.transpose(1, 0, 2))

video_array = np.array(video_array)
print(video_array.shape)
#(75, 50, 100, 3)

有一个较旧的 SO 线程 https://stackoverflow.com/q/44078327/425458关于这个主题,有很多细节(甚至可能有点太多)。我不会投票结束这个问题,我将快速概述该线程的主要要点:

  • 最快的常用图像读取功能是imread来自cv2包裹。
  • 读取图像然后将它们添加到普通的 Python 列表中(正如您已经在做的那样)是读取大量图像的最快方法。
  • However, given that you are eventually converting the list of images to an array of images, every possible method of building up an array of images is almost exactly as fast as any other
    • 有趣的是,如果您采用将图像直接分配给预分配数组的方法,则实际上分配给哪些索引(即哪个维度)对于获得最佳性能很重要。

所以基本上,在纯单线程 Python 中工作时,你将无法获得更快的速度。您可能会因切换到cv2.imread(代替PIL.Image.open).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文件夹中的图像序列获取 numpy 数组 的相关文章

随机推荐

  • 无法运行 scons 并出现导入错误

    我已经安装了 scons 2 3 2 并安装了 python 2 4 当我运行 scons 时 我看到以下错误 scons Import failed Unable to find SCons files in usr bin engine
  • 对象数组的 AJV 模式验证

    我正在尝试使用 AJV 模式验证来验证对象数组 下面是示例代码 var Ajv require ajv var schemaValidator Ajv var innerSchema type object properties c typ
  • Javascript 非法令牌错误

    如果这是一个简单的问题 请原谅我 但我似乎无法找到这段代码的原因 function create content c var html div c div if c links var ul ul li a href http www my
  • Iframe SandBox 阻止嵌入对象

    为什么有例子Example http www ufilme ro index cereri 0 11为什么当我使用 沙箱我看不到播放器 我想使用沙箱只是为了阻止弹出窗口 但看起来如果我使用它我看不到播放器 有没有allow objects
  • 如何通过脚本从sql server代理获取失败的作业?

    我想获取 sql server 代理无法通过 sql 脚本启动或运行的失败作业 我创建了一个视图来获取sql server中失败的作业 CREATE VIEW dbo View Failed Jobs AS SELECT Job insta
  • 为什么遇到 302 响应时 WCF 无法调用 SOAP 服务?

    我编写了一个应用程序 首先调用 WCF 进行登录 我生成了带有服务引用的客户端代码 对于将服务安装到网络本地的客户来说 它工作得很好 然而 也有一个 SaaS 环境 其中这些相同的服务由企业权力控制 saas环境下 提示登录失败 使用 Fi
  • Javascript 多重或条件检查

    我进行了一些简单的 if else 检查 var IsCompanyContacttitleUpdate false var ContactStatus 1 if IsCompanyContacttitleUpdate false Cont
  • 无法使用 adb 从 Android 设备提取 APK

    我正在尝试从我的设备获取已安装应用程序的 APK 我正在按照中的说明进行操作这个答案 https stackoverflow com a 18003462 5466997但是在拉取它时 adb 说 APK 不存在 这是具体步骤 adb sh
  • 如何将Json对象从ajax传递到spring mvc控制器?

    我正在 SpringMVC 上工作 我正在将数据从 ajax 传递到控制器 但我的控制器中得到空值 请检查下面的代码 function searchText var sendData pName bhanu lName prasad aja
  • 在我的流程中了解 NIFI 中的通知和等待流程

    我是 NIFI 流程的新手 在我当前的工作中 我有通知和等待流程 有人可以帮助我理解这个流程吗 On what basis the Notify work in my case we have 4 schema files process
  • 获取第一行数据(如果存在于 SQLite 中)

    我正在编写一个应用程序 其中如果存在于 SQLite 数据库表中 我需要获取第一行数据 我已经编写了将数据存储到数据库中的代码 但现在我想从数据库中获取第一行数据到 TextView 中 助手类 Select Data public Str
  • Django - 在 render_change_form 中获取对象 ID (ModelAdmin)

    我有这两个模型和 modeladmin 在可用主机用户列表中添加新主机时 仅显示未分配给其他主机的主机用户 问题是 如果我编辑一个已经创建的主机 它的实际主机用户 ID 也会被过滤 所以我想要做的是排除当前分配的主机用户 ID 如何在从主机
  • Chrome 内容脚本不起作用:DOMContentLoaded 侦听器不执行

    我正在尝试编写可纠正 1 个论坛上的拼写错误的扩展代码 我正在尝试访问 p 标签 带有内容脚本 但它不会改变任何内容 使用下面的代码 document addEventListener DOMContentLoaded function d
  • 找不到“UIView”的接口声明

    我正在尝试添加一个目标 C祝酒图书馆 https github com scalessec Toast到我的 xcode 项目 但我收到了一些这样的错误 Cannot find interface declaration for UIVie
  • msiexec.exe - 嵌入

    我正在使用基于云的 EDR 平台来监控客户端受感染网络上发生的进程 我最近经常看到的是使用选项 Embedding 调用 msiexec exe C Windows System32 MsiExec exe Embedding 35507F
  • 当连续输入错误时,循环中断java

    当您连续两次输入随机值 例如 i 时 程序将终止 我希望 无效数据 请重试 和 您想再玩一次吗 不断重复 直到输入 N 或 Y 7 8 5 No numbers match Do you want to play again i Inval
  • 除法不返回我期望的十进制值[重复]

    这个问题在这里已经有答案了 可能的重复 这个部门有什么问题吗 https stackoverflow com questions 704702 whats wrong with this division 如果你分2 3 它应该返回0 66
  • 适用于 OSX 和 Windows 应用程序的 Eclipse info.plist 文件

    当我寻找隐藏 Java 应用程序停靠图标的方法时 我到处都看到info plist 文件这个 and info plist 文件表示 但我没有看到一个 我的问题是如何在 eclipse 中生成 info plist 文件 它属于哪里 当我导
  • 如何在 iPhone 的导航栏中添加右栏按钮

    我想在导航栏中添加一个右栏按钮项目 以便单击时执行某些功能 我创建了以下代码来添加右侧栏按钮项目 但完成后 栏按钮项目没有显示在导航栏中 void viewDidload self navigationItem rightBarButton
  • 从文件夹中的图像序列获取 numpy 数组

    我有一个文件夹 比如说video1一堆按顺序排列的图像frame 00 png frame 01 png 我想要的是格式为 4D numpy 数组 number of frames w h 3 这就是我所做的 但我认为它很慢 有没有更快或更