配置视频质量

本主题介绍应用程序如何以编程方式更改视频捕获设备上的图像和相机设置。

ProcAmp 设置

Windows驱动程序模型 (WDM) 摄像机可以支持控制图像质量的属性:

  • 反光补偿
  • 亮度
  • 与此示例
  • 获得
  • Gamma
  • 色调
  • 饱和度
  • Sharpness
  • 白平衡

这些属性通过 IAMVideoProcAmp 接口进行控制。 按如下所示使用此接口:

  1. IAMVideoProcAmp 接口的捕获筛选器调用 QueryInterface
  2. 对于要设置的每个属性,请调用 IAMVideoProcAmp::GetRange 方法。 属性由 VideoProcAmpProperty 枚举指定。 如果 GetRange 方法失败,则表示相机不支持该特定属性。
  3. 如果 GetRange 成功,它将返回属性、默认值和最小增量的受支持值范围。
  4. 若要获取属性的当前值,请调用 IAMVideoProcAmp::Get
  5. 若要设置属性,请调用 IAMVideoProcAmp::Set 方法。 若要将属性还原到其默认值,请调用 GetRange 以查找默认值并将该值传递给 Set 方法。

设置属性时,无需停止筛选器图。

以下代码配置跟踪条控件,以便可用于设置亮度。 跟踪条的范围对应于设备支持的亮度范围,跟踪条的位置对应于设备的初始亮度设置。

HWND hTrackbar; // Handle to the trackbar control. 
// Initialize hTrackbar (not shown).

// Query the capture filter for the IAMVideoProcAmp interface.
IAMVideoProcAmp *pProcAmp = 0;
hr = pCap->QueryInterface(IID_IAMVideoProcAmp, (void**)&pProcAmp);
if (FAILED(hr))
{
    // The device does not support IAMVideoProcAmp, so disable the control.
    EnableWindow(hTrackbar, FALSE);
}
else
{
    long Min, Max, Step, Default, Flags, Val;

    // Get the range and default value. 
    hr = m_pProcAmp->GetRange(VideoProcAmp_Brightness, &Min, &Max, &Step,
        &Default, &Flags);
    if (SUCCEEDED(hr))
    {
        // Get the current value.
        hr = m_pProcAmp->Get(VideoProcAmp_Brightness, &Val, &Flags);
    }
    if (SUCCEEDED(hr))
    {
        // Set the trackbar range and position.
        SendMessage(hTrackbar, TBM_SETRANGE, TRUE, MAKELONG(Min, Max));
        SendMessage(hTrackbar, TBM_SETPOS, TRUE, Val);
        EnableWindow(hTrackbar, TRUE);
    }
    else
    {
        // This property is not supported, so disable the control.
        EnableWindow(hTrackbar, FALSE);
    }
}

摄像机设置

IAMCameraControl 接口类似于 IAMVideoProcAmp,但控制相机本身的各种设置:

  • 曝光
  • 侧重点
  • Iris
  • 平移
  • Roll
  • 倾斜
  • Zoom

若要使用此接口,请遵循用于 IAMVideoProcAmp 的相同步骤:

  1. 查询 IAMCameraControl 的捕获筛选器。
  2. 调用 IAMCameraControl::GetRange 以查找支持哪些设置,以及每个设置的可能范围。
  3. 调用 IAMCameraControl::Get 以获取设置的当前值。
  4. 调用 IAMCameraControl::Set 以设置值。

配置视频捕获设备