首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在DirectShow.Net中访问摄像头的电力线补偿和背光补偿设置

如何在DirectShow.Net中访问摄像头的电力线补偿和背光补偿设置
EN

Stack Overflow用户
提问于 2020-10-09 19:18:09
回答 1查看 494关注 0票数 1

我正在尝试编写一个程序,将设置摄像头设置根据存储的预设。我使用的是C#和DirectShow.Net。到目前为止,除了上面提到的那些,我还可以访问所有的设置。

要读取设置,我使用以下代码:

代码语言:javascript
运行
复制
            DsDevice[] capDevices;

            // Get the collection of video devices
            capDevices = 
                DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);

            // Select first camera
            var dev = capDevices[0];

            int hr;

            IBaseFilter capFilter = null;
            ICaptureGraphBuilder2 capGraph = null;

            // Get the graphbuilder object
            IFilterGraph2 m_FilterGraph = (IFilterGraph2)new FilterGraph();
            try
            {
                // Get the ICaptureGraphBuilder2
                capGraph = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();

                /// Start building the graph
                hr = capGraph.SetFiltergraph(m_FilterGraph);
                DsError.ThrowExceptionForHR(hr);

                // Add the video device
                hr = m_FilterGraph.AddSourceFilterForMoniker(dev.Mon, null, "Video input", out capFilter);
                DsError.ThrowExceptionForHR(hr);

                int value;

                // Reset settings
                cameraSettings.Reset();

                // Get IAMVideoProcAmp Values
                IAMVideoProcAmp pVideoAmp = (IAMVideoProcAmp)capFilter;
                VideoProcAmpFlags vpaFlags;

                pVideoAmp.Get(VideoProcAmpProperty.Brightness, out value, out vpaFlags);

                .....

                // Get IAMCameraControl Values
                IAMCameraControl pCameraControl = (IAMCameraControl)capFilter;
                CameraControlFlags ccFlags;

                pCameraControl.Get(CameraControlProperty.Exposure, out value, out ccFlags);

                .....

但是,这两个接口都不允许获取这两个值。我将附加一个屏幕截图,其中显示了在网络摄像头设置的典型窗口界面中可访问的值:

如何通过DirectShow.Net访问这些值?

EN

回答 1

Stack Overflow用户

发布于 2020-10-10 23:04:16

这些属性页分别使用IAMVideoProcAmpIAMCameraControl接口与筛选器对象通信。也就是说,IAMVideoProcAmp::SetIAMCameraControl::Set是由属性页实现调用的方法,它们同样可以由应用程序以编程方式使用。

属性枚举没有定义电力线频率和弱光补偿的值,因为SDK和文档不再更新以指示来自扩展枚举的值,但是确实存在新的属性。具体地说,它们存在于常用属性页实现中。

命名和文档化的属性值可从较低层SDK定义中获得:

  • KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY = 13
  • KSPROPERTY_CAMERACONTROL_AUTO_EXPOSURE_PRIORITY = 19
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64278994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档