Konfigurieren der Videoqualität
In diesem Thema wird beschrieben, wie eine Anwendung die Bild- und Kameraeinstellungen auf einem Videoaufnahmegerät programmgesteuert ändern kann.
ProcAmp Einstellungen
Windows Videokameras des Treibermodells (Driver Model, WDM) können Eigenschaften unterstützen, die die Qualität des Bilds steuern:
- Hintergrundbeleuchtungskompensierung
- Brightness
- Vergleichen Sie
- Gewinnen
- Gamma
- Farbton
- Sättigung
- Schärfe
- Weißabgleich
Diese Eigenschaften werden über die IAMVideoProcAmp-Schnittstelle gesteuert. Verwenden Sie diese Schnittstelle wie folgt:
- Rufen Sie QueryInterface für den Erfassungsfilter für die IAMVideoProcAmp-Schnittstelle auf.
- Rufen Sie für jede Eigenschaft, die Sie festlegen möchten, die IAMVideoProcAmp::GetRange-Methode auf. Eigenschaften werden von der VideoProcAmpProperty-Enumeration angegeben. Wenn die GetRange-Methode fehlschlägt, bedeutet dies, dass die Kamera diese bestimmte Eigenschaft nicht unterstützt.
- Wenn GetRange erfolgreich ist, wird der Bereich der unterstützten Werte für die -Eigenschaft, der Standardwert und das minimale Inkrement zurückgegeben.
- Rufen Sie IAMVideoProcAmp::Getauf, um den aktuellen Wert einer Eigenschaft abzurufen.
- Um eine Eigenschaft festzulegen, rufen Sie die IAMVideoProcAmp::Set-Methode auf. Um eine Eigenschaft auf ihren Standardwert wiederherzustellen, rufen Sie GetRange auf, um den Standardwert zu suchen und diesen Wert an die Set-Methode zu übergeben.
Sie müssen das Filterdiagramm nicht beenden, wenn Sie die Eigenschaften festlegen.
Der folgende Code konfiguriert ein Trackbar-Steuerelement, sodass es zum Festlegen der Helligkeit verwendet werden kann. Der Bereich der Trackleiste entspricht dem Helligkeitsbereich, den das Gerät unterstützt, und die Position der Trackleiste entspricht der anfänglichen Helligkeitseinstellung des Geräts.
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);
}
}
Kameraeinstellungen
Die IAMCameraControl-Schnittstelle ähnelt IAMVideoProcAmp,steuert jedoch verschiedene Einstellungen für die Kamera selbst:
- Belichtung
- Fokus
- Iris
- Schwenken
- rollen
- Tilt
- Zoom
Führen Sie die gleichen Schritte für IAMVideoProcAmpaus, um diese Schnittstelle zu verwenden:
- Fragen Sie den Erfassungsfilter für IAMCameraControl ab.
- Rufen Sie IAMCameraControl::GetRange auf, um die unterstützten Einstellungen und den möglichen Bereich für die einzelnen Einstellungen zu ermitteln.
- Rufen Sie IAMCameraControl::Get auf, um den aktuellen Wert einer Einstellung abzurufen.
- Rufen Sie IAMCameraControl::Set auf, um den Wert festzulegen.