비디오 품질 구성

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

이 항목에서는 애플리케이션이 비디오 캡처 디바이스에서 이미지 및 카메라 설정을 프로그래밍 방식으로 변경하는 방법을 설명합니다.

ProcAmp 설정

WDM(Windows 드라이버 모델) 비디오 카메라는 이미지의 품질을 제어하는 속성을 지원할 수 있습니다.

  • 백라이트 보정
  • 밝기
  • 이 예와
  • 이득
  • 감마
  • 색상
  • 채도
  • 선명도
  • 화이트 밸런스

이러한 속성은 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와 유사하지만 카메라 자체에서 다양한 설정을 제어합니다.

  • 노출
  • 포커스
  • 아이리스
  • 이동
  • Roll
  • 틸트
  • Zoom

이 인터페이스를 사용하려면 IAMVideoProcAmp에 사용되는 것과 동일한 단계를 수행합니다.

  1. IAMCameraControl에 대한 캡처 필터를 쿼리합니다.
  2. IAMCameraControl::GetRange를 호출하여 지원되는 설정과 각 설정에 대해 가능한 범위를 찾습니다.
  3. IAMCameraControl::Get을 호출하여 설정의 현재 값을 가져옵니다.
  4. IAMCameraControl::Set를 호출하여 값을 설정합니다.

비디오 캡처 디바이스 구성