如何从过滤器访问图像数据-DirectShowNet

wh1sp3r

我正在尝试找出如何从过滤器中获取位图数据。我正在使用DirectShowNet包装器从网络摄像头获取图像。

我当前的代码是:

public partial class Form1 : Form
{
    public IGraphBuilder gb;
    public ICaptureGraphBuilder2 cgb;
    public IBaseFilter filter;

    public Form1()
    {
        InitializeComponent();

        DsDevice[] videoInputDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);            
        object obj = null; Guid iid = typeof(IBaseFilter).GUID;
        videoInputDevices[1].Mon.BindToObject(null, null, ref iid, out obj);
        filter = (IBaseFilter)obj;

        ((IAMCameraControl)filter).Set(CameraControlProperty.Exposure, 0, CameraControlFlags.Auto);

        gb  = (IGraphBuilder) new FilterGraph();
        cgb = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();

        cgb.SetFiltergraph(gb);

        gb.AddFilter(filter, "First Filter");                        

        cgb.RenderStream(PinCategory.Preview, MediaType.Video, filter, null, null);
        ((IVideoWindow)gb).put_Owner(this.panel1.Handle);
        ((IVideoWindow)gb).put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren);
        ((IVideoWindow)gb).put_Visible(OABool.True);
        ((IVideoWindow)gb).SetWindowPosition(0, 0, this.panel1.Width, this.panel1.Height);
        ((IMediaControl)gb).Run();
    }
}

这个简单的代码只是将webcamera的输出呈现给面板控件。我尝试使用计时器和SaveToBitmap函数将图像从面板复制到位图,但此后位图为空白。

我读了一些有关Grabber过滤器的内容,但是我的解决方案没有用,它向缓冲区/样本返回了null ptr。

我想问一下,我应该添加什么才能读取图像数据?非常感谢你。

罗曼·R。

DirectShow管道的标准行为是,过滤器将数据彼此传递而不将数据显示给控制应用程序和代码,因此没有直接访问数据的方法。

您通常执行以下操作之一:

  1. 您将Sample Grabber Filter添加到管道的特定位置并进行设置,以便SG每次有数据通过时都给您回电
  2. 您从视频渲染器中获取当前显示的视频的副本

两种方法都有记录,流行和讨论过多次,包括在StackOverflow上:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从过滤器访问图像数据-DirectShowNet

来自分类Dev

如何过滤数据过滤器jQuery

来自分类常见问题

如何使用Docker图像过滤器

来自分类Dev

从过滤器访问“会话”

来自分类Dev

使用AngularJS过滤器过滤数据。如何遍历对象?

来自分类Dev

如何过滤数据透视表中的过滤器

来自分类Dev

如何从常规Servlet过滤器访问JAX RS方法?

来自分类Dev

如何访问jQuery过滤器函数中的元素?

来自分类Dev

Pandoc Lua过滤器:如何访问标题变量?

来自分类Dev

如何在过滤器中访问projectstage

来自分类Dev

如何在过滤器中访问Application或ViewHandler

来自分类Dev

如何从常规Servlet过滤器访问JAX RS方法?

来自分类Dev

如何访问jQuery过滤器函数中的元素?

来自分类Dev

ngGrid如何在多个列(例如Excel数据过滤器)上创建过滤器?

来自分类Dev

如何在过滤器数据表中使用全局过滤器

来自分类Dev

AngularJS如何使用过滤器延迟加载图像

来自分类Dev

如何为带有标签的图像创建过滤器?

来自分类Dev

列数据过滤器

来自分类Dev

如何实现数据表选择过滤器

来自分类Dev

如何仅显示数据透视表上的过滤器

来自分类Dev

如何在过滤器中加密响应数据

来自分类Dev

如何修复表格中的数据范围过滤器?

来自分类Dev

如何在Pandas数据框中配置过滤器?

来自分类Dev

如何使用Microsoft Sync Framework与过滤器数据同步

来自分类Dev

使用过滤器后如何组织数据

来自分类Dev

如何删除交叉过滤器中的重复数据?

来自分类Dev

如何创建指向数据过滤器元素的链接?

来自分类Dev

angularJS过滤器未过滤数据

来自分类Dev

如何通过外部URL访问过滤器,并在菜单中仅突出显示活动的过滤器类?

Related 相关文章

热门标签

归档