Configurar a qualidade do vídeo
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
Este tópico descreve como um aplicativo pode alterar programaticamente as configurações de imagem e câmera em um dispositivo de captura de vídeo.
Configurações do ProcAmp
As câmeras de vídeo WDM (Modelo de Driver do Windows) podem dar suporte a propriedades que controlam a qualidade da imagem:
- Compensação de luz de fundo
- Brightness
- Contraste
- Ganhar
- Gama
- Matiz
- Saturação
- Nitidez
- Proporção de branco
Essas propriedades são controladas por meio da interface IAMVideoProcAmp . Use esta interface da seguinte maneira:
- Chame QueryInterface no filtro de captura para a interface IAMVideoProcAmp .
- Para cada propriedade que você deseja definir, chame o método IAMVideoProcAmp::GetRange . As propriedades são especificadas pela enumeração VideoProcAmpProperty . Se o método GetRange falhar, isso significa que a câmera não dá suporte a essa propriedade específica.
- Se GetRange for bem-sucedido, ele retornará o intervalo de valores com suporte para a propriedade, o valor padrão e o incremento mínimo.
- Para obter o valor atual de uma propriedade, chame IAMVideoProcAmp::Get.
- Para definir uma propriedade, chame o método IAMVideoProcAmp::Set . Para restaurar uma propriedade para seu valor padrão, chame GetRange para localizar o padrão e passar esse valor para o método Set .
Você não precisa parar o grafo de filtro ao definir as propriedades.
O código a seguir configura um controle trackbar para que ele possa ser usado para definir o brilho. O intervalo da barra de controle corresponde ao intervalo de brilho ao qual o dispositivo dá suporte e a posição da barra de controle corresponde à configuração de brilho inicial do dispositivo.
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);
}
}
Camera Settings
A interface IAMCameraControl é semelhante a IAMVideoProcAmp, mas controla várias configurações na própria câmera:
- Exposição
- Foco
- Iris
- Panorâmica
- Roll
- Tilt
- Zoom
Para usar essa interface, siga as mesmas etapas usadas para IAMVideoProcAmp:
- Consulte o filtro de captura para IAMCameraControl.
- Chame IAMCameraControl::GetRange para localizar quais configurações têm suporte e o intervalo possível para cada configuração.
- Chame IAMCameraControl::Get para obter o valor atual de uma configuração.
- Chame IAMCameraControl::Set para definir o valor.
Tópicos relacionados