我正在使用DirectShow过滤器图来从视频中抓取帧。当前的实现遵循以下图表:
SourceFilter-> SampleGrabber-> NullRenderer
这大部分时间用于逐帧提取图像以进行进一步处理。但是我遇到了一些没有PAR为1:1的视频的问题。这些图像在我的处理步骤中延伸。
我现在发现解决此问题的唯一方法是在无窗口模式下使用VMR9渲染器,该模式使用GetCurrentImage()来提取具有正确宽高比的位图。但是这种方法对于连续抓取数千帧并不是非常有用。
我现在的问题是:解决这个问题的最佳方法是什么?还有人遇到过这个问题吗?
答案 0 :(得分:1)
Sample Grabber为您提供原始像素的帧。如果附加了宽高比并且像素不是"正方形像素"则这不是一个问题。要转换为方形像素,您只需要分别拉伸图像。您可以更轻松地在DirectShow管道之外执行此缩放步骤,并且您拥有所需的所有数据:像素和原始媒体类型。您可以使用方形像素计算相应的分辨率并重新取样。