首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

用Directshow来开发摄像头程序,如何设置亮度,对比度等参数

2012-04-10 
用Directshow来开发摄像头程序,怎么设置亮度,对比度等参数摄像头已经可以用了,不过我想要在程序里加上亮度

用Directshow来开发摄像头程序,怎么设置亮度,对比度等参数
摄像头已经可以用了,不过我想要在程序里加上亮度,对比等参数的设置,在网上找到的代码是这样的
C#代码是这样的
private void SetBrightness(IBaseFilter capFilter, int iBrightness)
{
  IAMVideoProcAmp videoProcAmp = capFilter as IAMVideoProcAmp;
  int Val;
  DirectShowLib.VideoProcAmpFlags Flags = VideoProcAmpFlags.Auto;
  videoProcAmp.Get(VideoProcAmpProperty.Brightness, out Val, out Flags);
  if (m_brightness != 0)
  {
  videoProcAmp.Set(VideoProcAmpProperty.Brightness, m_brightness, Flags);
  }
  else
  {
  ...
  }
}

IAMVideoProcAmp videoProcAmp = capFilter as IAMVideoProcAmp;这一句我想改成vb.net 应该是
dim videoProcAmp as IAMVideoProcAmp 可是后面这一部分我就看不懂了,不知道要怎么办
这个接口要怎么写,请高手帮助,最好是有完整一点的代码,可是让我看清楚一点

[解决办法]
在DirectShow,对很多设置可以通过 IAMVideoProcAmp接口设置亮度、对比度等属性 

下面m_pVideo是源设备Filter,

C# code
   IAMVideoProcAmp *pProcAmp = 0;   hr = m_pVideo->QueryInterface(IID_IAMVideoProcAmp, (void**)&pProcAmp);   if(SUCCEEDED(hr))   {    long Min, Max, Step, Default, Flags, Val;    // 亮度.     if( g_Brightness > 0 )    {     hr = pProcAmp->GetRange(VideoProcAmp_Brightness, &Min, &Max, &Step,      &Default, &Flags);     if(SUCCEEDED(hr))     {      hr = pProcAmp->Get(VideoProcAmp_Brightness, &Val, &Flags);      Val = Min+(Max-Min)*g_Brightness/100;      pProcAmp->Set(VideoProcAmp_Brightness, Val, Flags);     }    }   //对比度    if( g_Contrast > 0 )    {     hr = pProcAmp->GetRange(VideoProcAmp_Contrast, &Min, &Max, &Step,      &Default, &Flags);     if(SUCCEEDED(hr))     {      hr = pProcAmp->Get(VideoProcAmp_Contrast, &Val, &Flags);      Val = Min+(Max-Min)*g_Contrast/100;      pProcAmp->Set(VideoProcAmp_Contrast, Val, Flags);     }    }   //饱和度    if( g_Saturation > 0 )    {     hr = pProcAmp->GetRange(VideoProcAmp_Saturation, &Min, &Max, &Step,      &Default, &Flags);     if(SUCCEEDED(hr))     {      hr = pProcAmp->Get(VideoProcAmp_Saturation, &Val, &Flags);      Val = Min+(Max-Min)*g_Saturation/100;      pProcAmp->Set(VideoProcAmp_Saturation, Val, Flags);     }    }   } 

热点排行