Configurer la qualité vidéo
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Cette rubrique décrit comment une application peut modifier par programmation les paramètres de l’image et de l’appareil photo sur un appareil de capture vidéo.
Paramètres ProcAmp
Les caméras vidéo WDM (Windows Driver Model) peuvent prendre en charge les propriétés qui contrôlent la qualité de l’image :
- Compensation du rétro-éclairage
- Luminosité
- Contraste
- Gain
- Gamma
- Teinte
- Saturation
- Netteté
- Balance des blancs
Ces propriétés sont contrôlées via l’interface IAMVideoProcAmp . Utilisez cette interface comme suit :
- Appelez QueryInterface sur le filtre de capture de l’interface IAMVideoProcAmp .
- Pour chaque propriété que vous souhaitez définir, appelez la méthode IAMVideoProcAmp::GetRange . Les propriétés sont spécifiées par l’énumération VideoProcAmpProperty . Si la méthode GetRange échoue, cela signifie que la caméra ne prend pas en charge cette propriété particulière.
- Si GetRange réussit, elle retourne la plage de valeurs prises en charge pour la propriété, la valeur par défaut et l’incrément minimal.
- Pour obtenir la valeur actuelle d’une propriété, appelez IAMVideoProcAmp::Get.
- Pour définir une propriété, appelez la méthode IAMVideoProcAmp::Set . Pour restaurer une propriété à sa valeur par défaut, appelez GetRange pour rechercher la valeur par défaut et transmettez cette valeur à la méthode Set .
Vous n’avez pas besoin d’arrêter le graphique de filtre lorsque vous définissez les propriétés.
Le code suivant configure un contrôle de barre de suivi afin qu’il puisse être utilisé pour définir la luminosité. La plage de la barre de suivi correspond à la plage de luminosité prise en charge par l’appareil, et la position de la barre de suivi correspond au paramètre de luminosité initial de l’appareil.
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);
}
}
Paramètres de la caméra
L’interface IAMCameraControl est similaire à IAMVideoProcAmp, mais contrôle différents setttings sur la caméra elle-même :
- Exposition :
- Priorité
- Iris
- Panoramique
- Rouleau
- Tilt
- Zoom
Pour utiliser cette interface, suivez les mêmes étapes que celles utilisées pour IAMVideoProcAmp :
- Interrogez le filtre de capture pour IAMCameraControl.
- Appelez IAMCameraControl::GetRange pour déterminer les paramètres pris en charge et la plage possible pour chaque paramètre.
- Appelez IAMCameraControl::Get pour obtenir la valeur actuelle d’un paramètre.
- Appelez IAMCameraControl::Set pour définir la valeur.
Rubriques connexes