水平翻转视频输入C#DirectshowNet

水平翻转视频输入C#DirectshowNet,c#,directshow,directshow.net,C#,Directshow,Directshow.net,我正在使用directshownet库中的dxSnap示例从我的网络摄像头捕获图像。有人知道如何水平翻转视频捕获吗?两种方式: 1) 在网络摄像头后添加示例抓取器过滤器,为其提供回调,当回调获取数据时,只需将其翻转到位。 2) (更简单)获得图片后,使用GDI(BitBlt)或任何其他方法翻转图片。在某些情况下,可以通过在BitMapInfo标头中指定负高度来实现。查看示例中的DXSnap示例,了解ISampleGrabber接口的设置方式。。。它从样本抓取器回调中抓取样本图像。。。只需做一点工

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

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

在某些情况下,可以通过在
BitMapInfo标头中指定负高度来实现。

查看示例中的DXSnap示例,了解ISampleGrabber接口的设置方式。。。它从样本抓取器回调中抓取样本图像。。。只需做一点工作,您就可以支持一个事件以位图的形式获取帧

正确的方法是创建或查找一个过滤器,添加到支持翻转帧的图形中。。。MontiVision制造了一些很棒的过滤器…但不是廉价的


一些摄像机实际上支持这一点。如果你有一个logitec,你可以在谷歌上搜索C#COM接口包装器,你可以将其添加到你的图形中,大多数情况下,在图形开始之前必须定义视频方向。

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

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

你有密码吗?以前从未使用过这项技术。这是一种有趣的方法,我从未想过要这么做……这会奏效!