비디오 품질 구성
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
이 항목에서는 애플리케이션이 비디오 캡처 디바이스에서 이미지 및 카메라 설정을 프로그래밍 방식으로 변경하는 방법을 설명합니다.
ProcAmp 설정
WDM(Windows 드라이버 모델) 비디오 카메라는 이미지의 품질을 제어하는 속성을 지원할 수 있습니다.
- 백라이트 보정
- 밝기
- 이 예와
- 이득
- 감마
- 색상
- 채도
- 선명도
- 화이트 밸런스
이러한 속성은 IAMVideoProcAmp 인터페이스를 통해 제어됩니다. 다음과 같이 이 인터페이스를 사용합니다.
- IAMVideoProcAmp 인터페이스에 대한 캡처 필터에서 QueryInterface를 호출합니다.
- 설정하려는 각 속성에 대해 IAMVideoProcAmp::GetRange 메서드를 호출합니다. 속성은 VideoProcAmpProperty 열거형으로 지정됩니다. GetRange 메서드가 실패하면 카메라가 해당 특정 속성을 지원하지 않음을 의미합니다.
- GetRange가 성공하면 속성, 기본값 및 최소 증분에서 지원되는 값의 범위를 반환합니다.
- 속성의 현재 값을 얻으려면 IAMVideoProcAmp::Get을 호출합니다.
- 속성을 설정하려면 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에 사용되는 것과 동일한 단계를 수행합니다.
- IAMCameraControl에 대한 캡처 필터를 쿼리합니다.
- IAMCameraControl::GetRange를 호출하여 지원되는 설정과 각 설정에 대해 가능한 범위를 찾습니다.
- IAMCameraControl::Get을 호출하여 설정의 현재 값을 가져옵니다.
- IAMCameraControl::Set를 호출하여 값을 설정합니다.
관련 항목