如何在Python中正确使用OpenCV VideoWriter编写具有float32源数据类型的单色视频?

2023-11-30

我正在尝试存储来自 Kinect 传感器的多个源(颜色、深度和红外)的视频文件。

这是图像我使用 cv2.imshow 命令可视化 使用以下代码:

cv2.imshow("ir", ir / 65535.)
cv2.imshow("depth", depth / 4500.)
cv2.imshow("color", color)

IR 和深度都是数组,大小为(height, width), float32。颜色是一个大小为的数组(height, width, 3),其中 3 是 RGB 通道,uint8键入 0-255。由于 IR 和深度的值很大,我们需要使用上面的代码对它们进行标准化。这段代码给出了上面的数字。

现在我想将一系列图像数组存储为视频文件。我使用以下代码:

ir_video = cv2.VideoWriter('ir.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), False)
depth_video = cv2.VideoWriter('depth.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), False)
color_video = cv2.VideoWriter('color.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), True)

for ir, depth, color in zip(ir_frames, depth_frames, color_frames):
    ir_video.write(ir / 65535.)
    depth_video.write(depth / 4500.)
    color_video.write(color)

ir_video.release()
depth_video.release()
color_video.release()

彩色视频效果很好,看起来与cv2.imshow命令。但是,IR 和深度视频已损坏。全部 0kb。 我尝试将 fourcc 代码更改为cv2.VideoWriter_fourcc(*'mp4v')。这次红外保存了一个我可以播放的视频。但它与cv2.imshow结果。显示的是here.

我想知道如何正确保存结果cv2.imshow命令。应该使用什么 fourcc 代码?多谢!


从 OpenCV 4.7.0 开始,可以编写 16 位深度的视频,请参阅拉取请求增加了对其的支持.

For VideoWriter你必须:

  • specify CAP_FFMPEG因为目前似乎只有 FFmpeg 支持
  • use the FFV1 codec
  • specify {VIDEOWRITER_PROP_DEPTH, CV_16U, VIDEOWRITER_PROP_IS_COLOR, false} as params

For VideoCapture(阅读)你必须:

  • specify CAP_FFMPEG
  • specify {CAP_PROP_CONVERT_RGB, false} as params
    请注意,这将在控制台上打印一条警告,例如“VIDEOIO/FFMPEG:BGR 转换已关闭...”。

不过,这似乎有一些限制,请参阅拉取请求的描述.

该拉取请求还添加了单元测试.

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

如何在Python中正确使用OpenCV VideoWriter编写具有float32源数据类型的单色视频? 的相关文章

随机推荐

  • 无需 join 语句即可从一张表更新另一张表

    我想根据另一个表的值更新表中的列 我使用稍旧版本的 Firebird 2 1 因此它在更新执行期间不支持 join 语句 为了消除这种情况 根据原始 Firebird 常见问题解答中给出的说明http www firebirdfaq org
  • JSF 2.0.3 中的英文错误消息(未验证)?

    我已成功配置 JSF 1 2 以显示来自服务器的英文错误消息 现在我正在过渡到 JSF 2 0 但错误消息似乎又回到了德语 如果你想用谷歌搜索任何东西 本地化错误消息真的很痛苦 顺便说一句 我不知道是谁决定本地化错误消息是一件好事 这是面孔
  • TableView 中的 JavaFX 属性

    我正在自学如何在 TableView 中使用 JavaFX 属性 但在处理某些属性类型时遇到了问题 我有一个包含两个属性的对象 Person public class Person private final StringProperty
  • Laravel 路由文件中的 If 条件

    有没有办法在 Laravel 5 的 paths php 文件中添加 if 语句 我已经尝试过这个但不起作用 Route get function if Auth user Route get PagesController logged
  • 如何等待函数或数据库查询?然后处理结果最后发回

    我有这样的场景 app get async function request response await foo DbConnection then result gt console log response ready let foo
  • 在 Apache Thrift C# 中将流作为属性发送

    我想在 Thrift 服务中使用流 例如 在服务方法中使用流或类似的东西作为方法的参数 例如 能够将 IDataReader 的结果序列化为流 然后反序列化对另一服务器端数据的引用 我认为这显然不可能 但我想知道是否有另一种方法可以实现类似
  • 函数内公式错误

    我想用survfit and basehaz 在函数内部 但它们不起作用 你能看一下这个问题吗 感谢您的帮助 以下代码会导致错误 library survival n lt 50 total sample size nclust lt 5
  • 从套接字读取缓冲区

    我正在用 c 编写简单的服务器 客户端 其中服务器临时存储来自客户端的消息并在客户端请求时检索它 问题是当客户端从服务器接收消息时 缓冲区的行为有点奇怪 我所做的只是读取从服务器接收的数据并将其打印在屏幕上 但不知何故缓冲区被覆盖的程度超过
  • D3 补间 - 暂停和恢复控件

    我正在尝试编辑这个d3 示例 更具体地说 我将尝试应用暂停 恢复控件暂停恢复指南除了像这样的控制栏外 我们还在视频下提供了控制栏 最后我想象有这样的事情 如何在开始时应用暂停恢复控制 这是一个快速实施 暂停本质上取消了当前的转换 并且播放根
  • 无法将 TableRowSorter 添加到 SwingWorker 生成的 JTable 中

    谢谢装满鳗鱼的气垫船注意到我的问题充满了混乱的代码 不太可能得到解决 从那时起 我创建了一个 最小 测试程序来显示该问题 问题 我想要做的是有一个 GUI 它显示包含员工信息的表格 并且还允许用户通过在 GUI 顶部的 jtextfield
  • 如何在Swift中同时实现三个手势?

    我正在构建 SwiftUI 应用程序 我需要在视图中旋转 放置签名并调整其大小 我已经实现了最后两个手势 但是当我激活最后一个手势时 它破坏了一切 理想的情况是黑圈能够同时配置角度和大小 但两者开始相互冲突 在此测试片段中 我选择了使用的代
  • 如何删除数组中的项目? [复制]

    这个问题在这里已经有答案了 我正在编码Swift 并与一个问题混淆 我遇到了索引超出范围错误当我尝试在数组枚举期间从数组中删除一项时 这是我的错误代码 var array Int 0 1 2 3 4 5 for index number i
  • 为什么即使已调用 API 网关回调,我的 Lambda 函数也会超时?

    我有一个 AWS API Gateway 方法 可将请求代理到 AWS Lambda 但是 三秒后出现错误 日志中显示以下内容 转换前的端点响应正文 errorMessage 2017 09 05T16 30 49 987Z 922186c
  • 如何更改模型中的 Zend_Db_Table 名称以插入多个表

    使用 Zend Framework 我创建了一个模型来将记录插入数据库 我的问题是 之后 this gt insert data 如何切换活动表以便将记录插入到另一个表中 到目前为止 这是我的代码 class Model DbTable F
  • 学说 - 通过关系发现了一个新实体

    两周以来 我们在尝试刷新新元素时遇到了这个问题 关键 Doctrine ORM ORMInvalidArgumentException 通过关系 Comment capture 找到了一个新实体 该实体未配置为级联实体的持久操作 But t
  • 正则表达式:匹配至少两个搜索词

    我有一个搜索词列表 我想要一个正则表达式来匹配至少有两个搜索词的所有项目 术语 战争 军队 战斗 叛军 冲突 匹配war在 之间rebels和army导致了几个clashes本星期 4 次点击 不匹配 在war在恐怖主义方面 奥巴马政府希望
  • PowerShell 中的 virtualenv?

    似乎有一个问题 当虚拟环境用于 PowerShell 中 当我尝试在 PowerShell 中激活我的环境时 例如 env scripts activate 什么都没发生 shell 提示符以及 PATH 环境变量应该已更改 我猜问题是 P
  • 如何向 ggplot 添加带有斜体的复杂标签和变量?

    我已经阅读了很多关于这个主题的帖子expression paste and bquote 或某种组合 我认为我已经接近解决我的问题 但我就是无法到达那里 以下脚本生成一个标有 y 1 2 x r 2 0 9 的图 如何将 y 和 x 斜体化
  • Matlab sprintf 格式化

    EDIT 我已经将问题改写得更清楚了 有谁知道让 sprintf 打印 6f 并消除尾随零 的巧妙方法吗 这就是我正在寻找的 sprintf somemagic 12345678 123 45 ans 1234578 123 45 其中 s
  • 如何在Python中正确使用OpenCV VideoWriter编写具有float32源数据类型的单色视频?

    我正在尝试存储来自 Kinect 传感器的多个源 颜色 深度和红外 的视频文件 这是图像我使用 cv2 imshow 命令可视化 使用以下代码 cv2 imshow ir ir 65535 cv2 imshow depth depth 45