【问题标题】:Changing bits in a frame in video using OpenCV使用 OpenCV 更改视频帧中的位
【发布时间】:2016-02-16 16:16:42
【问题描述】:

当前情景:

我正在做一个视频处理项目,该项目需要我对视频文件的各个帧的内容进行修改。

我的方法:

  • 将视频分割成多个帧,即 RGB 图像。
  • 修改图像,假设为 RGB 图像
  • 将修改后的框架替换为原始框架。

我的问题:

  • 什么样的视频格式可以让我做这样的处理?
  • 另一种说法是 MP4 等有损视频格式允许我编辑图像(RGB 格式)并安全替换它吗?

【问题讨论】:

  • 对于大多数有损格式,如果您更改单个 rgb 图像,您将更改许多帧,因为编码帧通常取决于前一帧的内容。
  • @Micka 要知道他并没有压缩数据来编码。他只是在处理。是的,如果他正在编码,我同意你的看法,他需要“P”和“B”帧来预测下一帧中的块。我们可以修改任何需要的帧进行处理。

标签: opencv video video-processing


【解决方案1】:

如果您仍然对探索的想法持开放态度...

这些媒体容器格式似乎允许将位图字节包含为视频帧。

  • MOV 容器(Apple Quicktime)似乎支持 PNG 编解码器
  • AVI 容器(支持 RGBA 无损编解码器 - 请参阅 Lagarith 和 HuffYUV)

  • FLV 容器(支持位图数据和 JPEG):位图编解码器被称为“ScreenVideo”,但它只是未压缩的 RGBA 信息楔入大约 11 个前字节之间(定义帧/标签标头 inc 时间戳等) + 您的位图数据 + 结束 4 个字节(确认标签大小的整数)。

  • MP4 仅包含 MPEG 编解码器(因此图片必须是 H.264 或 H.265 格式):您使用的是 C++ 吗?我认为someone made a keyframe encoder for H.264 所以也许你可以使用该代码来提供最终编码(或者至少最终得到可以通过 FFMPEG 或此类工具放入 MP4 的 .h264 文件)

基本上使用 OpenCV 来处理您拥有的任何格式,逐帧逐帧提取并将每一帧提取到 RGBA,然后编辑图像抓取并将该位图数据放入 FLV 或使用 Cardinal Peak 的 H264 编码器代码。您不需要 FLV 编码器,只需以某种方式编写定义 FLV 文件的字节即可。它非常简单,您甚至可以使用十六进制编辑器(显然在需要的地方粘贴长位图数据)

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2011-10-29
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多