Konfigurieren der Videoqualität
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
In diesem Thema wird beschrieben, wie eine Anwendung die Bild- und Kameraeinstellungen auf einem Videoaufnahmegerät programmgesteuert ändern kann.
ProcAmp-Einstellungen
WdM-Videokameras (Windows Driver Model) können Eigenschaften unterstützen, die die Qualität des Bilds steuern:
- Hintergrundbeleuchtungskompensation
- 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 durch die VideoProcAmpProperty-Enumeration angegeben. Wenn die GetRange-Methode fehlschlägt, bedeutet dies, dass die Kamera diese bestimmte Eigenschaft nicht unterstützt.
- Wenn GetRange erfolgreich ist, gibt es den Bereich der unterstützten Werte für die Eigenschaft, den Standardwert und den Mindestinkrement zurück.
- Rufen Sie IAMVideoProcAmp::Get auf, 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 finden, und übergeben Sie diesen Wert an die Set-Methode .
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 Trackbar entspricht dem Helligkeitsbereich, den das Gerät unterstützt, und die Position der Trackbar 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 auf der Kamera selbst:
- Belichtung
- Fokus
- Iris
- Schwenken
- Rollen
- Tilt
- Zoom
Führen Sie zum Verwenden dieser Schnittstelle die gleichen Schritte aus, die für IAMVideoProcAmp verwendet werden:
- Fragen Sie den Erfassungsfilter für IAMCameraControl ab.
- Rufen Sie IAMCameraControl::GetRange auf, um zu ermitteln, welche Einstellungen unterstützt werden, und den möglichen Bereich für die einzelnen Einstellungen.
- Rufen Sie IAMCameraControl::Get auf, um den aktuellen Wert einer Einstellung abzurufen.
- Rufen Sie IAMCameraControl::Set auf , um den Wert festzulegen.
Zugehörige Themen