1

我正在使用 DirectShow filtergraph 从视频中抓取帧。当前的实现遵循此图:

SourceFilter->SampleGrabber->NullRenderer

这在大多数情况下可以逐帧提取图像以进行进一步处理。但是,我遇到了一些 PAR 不是 1:1 的视频的问题。这些图像在我的处理步骤中出现拉伸。

我现在发现解决这个问题的唯一方法是在无窗口模式下使用 VMR9 渲染器,该渲染器使用 GetCurrentImage() 来提取具有正确纵横比的位图。但是这种方法对于连续抓取上千帧的情况并不是很有用。

我现在的问题是:解决此问题的最佳方法是什么?有没有人也遇到过这个问题?

4

1 回答 1

1

Sample Grabber 为您提供具有原始像素的帧。如果附加纵横比并且像素不是“方形像素”,这不是问题。要转换为方形像素,您只需分别拉伸图像。在 DirectShow 管道之外执行此缩放步骤会更容易,并且您拥有所需的所有数据:像素和原始媒体类型。可以用正方形像素计算对应的分辨率,对图片重新采样。

于 2015-01-08T09:10:04.650 回答