繁体   English   中英

从视频的每一帧中捕获单个像素行并将它们编译在一起

[英]Capture a single pixel row from each frame of video and compile them together

我正在做一个项目,我需要从提供的视频文件的每一帧中获取单个水平或垂直像素行(或列,我猜)并从中创建一个图像,基本上将像素行附加到图像上在整个视频中。 我计划提供的视频文件不是普通视频,它实际上只是从视频游戏(光环:致远星)中拍摄的平移摄像机,直视(或游戏允许的范围内,即 -85.5 °)。 我会向下看,非常缓慢地在风景上向前平移相机,然后从捕获的视频文件 (30fps) 的每一帧中获取一个像素行,并将这些行编译成一个图像,该图像将有效地(希望)将风景重建为单个图像。

我想过以快速而肮脏的方式来做这件事,使用 AxWindowsMediaPlayer 控件并锁定表单,使其无法移动或调整大小,然后只使用 Graphics object 来捕获屏幕,但这还不够快,会有太多问题,我需要直接访问框架。

我听说过 FFLib 和 DirectShow.NET,实际上我刚刚安装了 Windows SDK 但还没有机会弄乱 DirectX 的东西(我记得前一段时间我搞砸了它让我很困惑用它)。 希望有人可以给我一个正确方向的指针。

如果有人有任何他们认为可能有帮助的信息,我将非常感激。 谢谢!

您可以使用以无渲染模式(例如 VMR9、EVR)渲染的视频,它允许您自己处理每一帧。 通过使用帧步进播放,您可以每次步进一帧并处理该帧。

DirectShow.NET 可以帮助您尽可能使用托管代码,我可以推荐它。 然而,它只是 DirectShow 的一个包装器,因此寻找更高级的库也是值得的。

一些旁注:您不会遇到不同角度的照明问题吗? 也许捕获一些屏幕截图并使用现有的拼接算法更容易?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM