水平翻转视频输入C#DirectshowNet

时间:2011-06-23 13:08:03

标签: c# directshow directshow.net

我正在使用directshownet库http://directshownet.sourceforge.net/about.html中的dxSnap示例从我的网络摄像头捕获图像。有人知道如何水平翻转视频捕捉吗?

4 个答案:

答案 0 :(得分:1)

两种方式: 1)在网络摄像头之后添加Sample Grabber过滤器,为其提供回调,当您的回调获取数据时,只需将其翻转到位。 2)(更简单)获得图片后,使用GDI(BitBlt)或任何其他方法翻转图片。

答案 1 :(得分:1)

在某些情况下,可以在BITMAPINFOHEADERsee Top-Down vs. Bottom-Up DIBs中指定负高度。

答案 2 :(得分:1)

查看示例中的DXSnap示例,了解ISampleGrabber接口是如何设置的......它从示例抓取器回调中抓取样本图像......只需要一点工作就可以获得一个事件来获取帧作为位图。 ..

这样做的正确方法是创建或找到一个过滤器添加到你的图形中,支持翻转框架... MontiVision制作了一些很棒的过滤器......但不是很好。

有些相机实际上支持这个。如果您有一个logitec,您可以谷歌搜索可以添加到图表中的C#COM界面包装器,大多数情况下必须在图表启动之前定义视频方向。

答案 3 :(得分:0)

我达到了你想要的效果,但我使用了AForge Framework(它使用DirectShow界面来访问视频源)。我所做的只是在每个新帧上调用一个事件处理程序并水平翻转这些帧:

private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    eventArgs.Frame.RotateFlip(RotateFlipType.RotateNoneFlipX);
}