Image processing 如何读取视频的像素值?

Image processing 如何读取视频的像素值?,image-processing,video-processing,Image Processing,Video Processing,我最近为BMP图像的图像处理编写了C程序,我必须读取像素值并进行处理,非常简单,我遵循BMP标题的内容,我可以获得BMP图像的大部分信息 现在的挑战是处理视频(一帧一帧),我该怎么做?如何才能读取视频剪辑中连续图像帧流的标题?或者,它是否像,例如,mpeg格式也将具有通用头,在读取时,我可以获得整个视频的信息,在头之后,所有数据都只是像素 我希望我能传达 有人有处理视频的经验吗 任何书籍或教程链接都会非常有用。视频流(如MPEG)由许多帧组成,这些帧取决于(显然)其持续时间和帧速率。要读取像素,

我最近为BMP图像的图像处理编写了C程序,我必须读取像素值并进行处理,非常简单,我遵循BMP标题的内容,我可以获得BMP图像的大部分信息

现在的挑战是处理视频(一帧一帧),我该怎么做?如何才能读取视频剪辑中连续图像帧流的标题?或者,它是否像,例如,mpeg格式也将具有通用头,在读取时,我可以获得整个视频的信息,在头之后,所有数据都只是像素

我希望我能传达

有人有处理视频的经验吗


任何书籍或教程链接都会非常有用。

视频流(如MPEG)由许多帧组成,这些帧取决于(显然)其持续时间和帧速率。要读取像素,必须从称为帧内的帧开始,该帧不依赖于流中的前一帧。任何连续帧都是与前一帧在时间上相关的帧,因此要获得其像素,必须将流从帧内解码到所需帧。
注意,典型地,周期性地插入帧内帧以向解码器提供与流同步的方式。这在可能发生错误的情况下非常有用。
你想做的不是一件容易的工作。如果要进行后处理(如过滤器或其他),则必须使用MPEG解码器,然后在播放前修改帧。

我建议你学习视频编码,从标准的MPEG开始,你可以找到很多关于视频编码的资料。

我建议你研究一下。它有一个命令行实用程序,可以从电影中抓取帧并将其转储到像JPG这样的图像中。然后,您可以修改现有的读取器来处理JPG文件(只需使用libjpeg之类的工具将JPG解码为原始像素缓冲区)


或者,您可以使用FFMpeg API(C、Python、其他),通过编程进行帧捕获,并在视频中移动时查看像素。视频格式很复杂,因此,除非您想开始了解所有不同的编解码器,否则您可能需要抓取一个库来为您解码原始像素缓冲区。

MPEG 1/2/4视频比位图更难处理,因为它们是压缩的。使用位图数据,可以将实际颜色值直接存储到文件中。在MPEG或JPEG中,颜色信息在写入文件之前经过数字转换。其中包括

  • RGB->YUV 420P(亚采样色度)
  • 离散余弦变换
  • 加权量化
  • 之字形排序
  • 差分编码
  • 可变长度编码(类哈夫曼编码)

所有这些都意味着没有简单的方法来解析文件中的像素数据。您要么研究标准的每一个细节,编写自己的解码器,要么使用ffmpeg之类的视频解码库为您完成这项工作。ffmpeg可以将视频转换为静止图像()。此外,还可以直接连接到ffmpeg库(libavformat和libavcodec)。有关良好的教程,请参见的答案。

谢谢毛里齐奥的建议。我只需要再澄清一下,mpeg是一种像jpeg一样的压缩格式,我想,在本质上有没有原始未压缩的视频格式(在BMP图像的线条上)?我只是想避开视频解码器。另外,请说明我对以下陈述的正确/错误-原始视频格式不需要解码器。我从未使用过原始解码器,但我认为你的陈述是正确的。对不起,我不能给你任何建议。嗨,毛里齐奥,几天前我发布了一个新问题,请看一下。其标题为:网络摄像头视频流处理。它只有9个观点,还没有答案。我不同意你的观点。这取决于您必须执行的处理类型。例如,如果进行简单的模糊处理,则可以在要显示的帧的副本中进行,而无需更改解码器。请注意,更改解码器可能会严重影响解码过程:解码器必须是标准的。我只是想指出,如果不使用复杂的解码软件,您无法轻松编写程序从视频文件中获取像素数据。的确,帧解码后,处理过程与位图完全相同,因为此时您已将其转换为原始RGB图像数据。再次感谢Maurizio和Jason的建议。Jason我想知道你对以下内容的看法-mpeg是一种类似jpeg的压缩格式,我想,是否有任何视频格式本质上是未经压缩的原始格式(在BMP图像行上)?我只是想避开视频解码器。另外,请告诉我以下陈述是否正确/错误-原始视频格式不需要解码器。是的,有未压缩格式。我不确定他们有多标准(我不知道他们是否能与各种各样的球员合作)。我知道您可以通过命令行使用
-vcodec rawvideo
使用ffmpeg创建未压缩的视频文件。它可以让你将视频转换成AVI等任何容器格式,也可以不使用容器直接输出。未压缩视频不太受欢迎,因为它需要空间,而且压缩后的视频质量仍然很好。我刚刚试着将一个12 MB的mpeg-4样本剪辑转换成一个未压缩的版本,结果是684 MB。谢谢。你能花点时间回答我给Jason和Maurizio的几个问题吗?你不会发现有很多未压缩的视频。我甚至不知道视频的原始格式是如何安排的。对于图像,它几乎像一个BMP,但它可以在不同的颜色空间。您可能需要进行颜色空间转换。我是