ビデオ品質を構成する
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
このトピックでは、アプリケーションがビデオ キャプチャ デバイスの画像とカメラの設定をプログラムで変更する方法について説明します。
ProcAmp の設定
Windows Driver Model (WDM) ビデオ カメラでは、イメージの品質を制御するプロパティをサポートできます。
- バックライト補正
- Brightness
- この例を、
- 得る
- Gamma
- [色合い]
- [鮮やかさ]
- Sharpness
- ホワイト バランス
これらのプロパティは、 IAMVideoProcAmp インターフェイスを使用して制御されます。 このインターフェイスは次のように使用します。
- IAMVideoProcAmp インターフェイスのキャプチャ フィルターで QueryInterface を呼び出します。
- 設定するプロパティごとに、 IAMVideoProcAmp::GetRange メソッドを呼び出します。 プロパティは VideoProcAmpProperty 列挙体によって指定されます。 GetRange メソッドが失敗した場合は、カメラがその特定のプロパティをサポートしていないことを意味します。
- GetRange が成功すると、プロパティでサポートされている値の範囲、既定値、および最小増分が返されます。
- プロパティの現在の値を取得するには、 IAMVideoProcAmp::Get を呼び出します。
- プロパティを設定するには、 IAMVideoProcAmp::Set メソッドを呼び出します。 プロパティを既定値に戻すには、 GetRange を呼び出して既定値を検索し、その値を Set メソッドに渡します。
プロパティを設定するときにフィルター グラフを停止する必要はありません。
次のコードでは、明るさを設定するために使用できるようにトラックバー コントロールを構成します。 トラックバーの範囲はデバイスがサポートする明るさの範囲に対応し、トラックバーの位置はデバイスの初期輝度設定に対応します。
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);
}
}
カメラ設定
IAMCameraControl インターフェイスは IAMVideoProcAmp に似ていますが、カメラ自体のさまざまな設定を制御します。
- 露出
- フォーカス
- Iris
- パン
- Roll
- 傾斜
- Zoom
このインターフェイスを使用するには、 IAMVideoProcAmp に使用されるのと同じ手順に従います。
- IAMCameraControl のキャプチャ フィルターに対してクエリを実行します。
- IAMCameraControl::GetRange を呼び出して、サポートされている設定と、各設定で使用可能な範囲を見つけます。
- IAMCameraControl::Get を呼び出して、設定の現在の値を取得します。
- IAMCameraControl::Set を呼び出して値を設定します。
関連トピック