如何使用IAMVideoProcAmp为相机设置亮度?

时间:2013-03-25 11:31:41

标签: c# webcam directshow.net

我正在尝试使用IAMVideoProcAmp(directshow.net C#)来设置微软相机(lifecam studio)的亮度。 我引用here的解决方案。此解决方案使用IAMVideoProcAmp为摄像机设置亮度。我通过调用

连接到设备后

DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);

我设置相机的亮度。但是,当我调用IAMVideoProcAmp

的Set()函数时,它似乎不起作用
int Set(
          VideoProcAmpProperty Property, // VideoProcAmpProperty
          int lValue,          // Value to set
          VideoProcAmpFlags Flags  // VideoProcAmp_Flags_* 
       );

我尝试为此功能设置各种有效值,但对相机没有影响。 我可以按功能获取相机亮度属性的最大/最小/默认值:

int GetRange(
            VideoProcAmpProperty Property,         // Which property to query
            out int pMin,          // Range minimum
            out int pMax,          // Range maxumum
            out int pSteppingDelta,// Step size
            out int pDefault,      // Default value
            out VideoProcAmpFlags pCapsFlags     // VideoProcAmpFlags
            );

它给了我max = 255,min = 30,默认= 133,pCapsFlags = manual。

我还使用Microsoft lifecam软件调整亮度,它会立即对相机产生影响。但亮度的最大/最小值是max = 2.5,min = -2.5 请告诉我设置相机亮度的方法以及为什么我得到的最大/最小值与属性页上的值不同?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

最后我发现IAMVideoProcAmp::Set不起作用,因为微软的lifecam软件。此软件随着相机驱动程序的安装一起安装。这个软件的TrueColor功能是这个问题的关键,当我从这个软件打开TrueColor,然后我不能使用IAMVideoProcAmp::Set来调整我的应用程序的亮度。只需卸载Microsoft lifecam,它就可以满足我的需求。希望这些信息可以帮助别人解决同样的问题。