Condividi tramite


Configurare la qualità del video

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Questo argomento descrive come un'applicazione può modificare a livello di codice le impostazioni dell'immagine e della fotocamera in un dispositivo di acquisizione video.

Impostazioni procAmp

Le videocamere WDM (Windows Driver Model) possono supportare proprietà che controllano la qualità dell'immagine:

  • Compensazione del backlight
  • Luminosità
  • Si confronti
  • Guadagno
  • Gamma
  • Tonalità
  • Saturazione
  • Nitidezza
  • Bilanciamento del bianco

Queste proprietà vengono controllate tramite l'interfaccia IAMVideoProcAmp . Usare questa interfaccia come segue:

  1. Chiamare QueryInterface nel filtro di acquisizione per l'interfaccia IAMVideoProcAmp .
  2. Per ogni proprietà che si desidera impostare, chiamare il metodo IAMVideoProcAmp::GetRange . Le proprietà vengono specificate dall'enumerazione VideoProcAmpProperty . Se il metodo GetRange ha esito negativo, significa che la fotocamera non supporta tale proprietà specifica.
  3. Se GetRange ha esito positivo, restituisce l'intervallo di valori supportati per la proprietà, il valore predefinito e l'incremento minimo.
  4. Per ottenere il valore corrente di una proprietà, chiamare IAMVideoProcAmp::Get.
  5. Per impostare una proprietà, chiamare il metodo IAMVideoProcAmp::Set . Per ripristinare un valore predefinito di una proprietà, chiamare GetRange per trovare il valore predefinito e passare tale valore al metodo Set .

Non è necessario arrestare il grafico dei filtri quando si impostano le proprietà.

Il codice seguente configura un controllo trackbar in modo che possa essere usato per impostare la luminosità. L'intervallo della barra di avanzamento corrisponde all'intervallo di luminosità supportato dal dispositivo e la posizione della barra di avanzamento corrisponde all'impostazione di luminosità iniziale del 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);
    }
}

Impostazioni videocamera

L'interfaccia IAMCameraControl è simile a IAMVideoProcAmp, ma controlla vari settting sulla fotocamera stessa:

  • Esposizione
  • Focus
  • Iris
  • Dettaglio
  • Rotolo
  • Tilt
  • Zoom

Per usare questa interfaccia, seguire la stessa procedura usata per IAMVideoProcAmp:

  1. Eseguire una query sul filtro di acquisizione per IAMCameraControl.
  2. Chiamare IAMCameraControl::GetRange per trovare le impostazioni supportate e l'intervallo possibile per ogni impostazione.
  3. Chiamare IAMCameraControl::Get per ottenere il valore corrente di un'impostazione.
  4. Chiamare IAMCameraControl::Set per impostare il valore.

Configurazione di un dispositivo di acquisizione video