Настройка качества видео
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
В этом разделе описывается, как приложение может программно изменять параметры изображения и камеры на устройстве захвата видео.
- параметры ProcAmp
- параметры камеры
- Связанные темы
Параметры ProcAmp
Видеокамеры модели драйверов Windows (WDM) могут поддерживать свойства, управляющие качеством изображения:
- Компенсация заднего света
- Яркость
- Контраст
- Прибыль
- Гамма
- Оттенок
- Насыщение
- Резкость
- Баланс белого цвета
Эти свойства управляются с помощью интерфейса IAMVideoProcAmp. Используйте этот интерфейс следующим образом:
- Вызов QueryInterface в фильтре записи для интерфейса IAMVideoProcAmp.
- Для каждого свойства, которое требуется задать, вызовите метод 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, но управляет различными настройками на самой камере:
- Экспозиция
- Фокус
- Ирис
- Сковорода
- Рулон
- Наклон
- Zoom
Чтобы использовать этот интерфейс, выполните те же действия, которые используются для IAMVideoProcAmp:
- Запросите фильтр захвата для IAMCameraControl.
- Вызовите IAMCameraControl::GetRange, чтобы найти поддерживаемые параметры и возможный диапазон для каждого параметра.
- Вызовите IAMCameraControl::Get, чтобы получить текущее значение параметра.
- Вызовите IAMCameraControl::Set, чтобы задать значение.
Связанные разделы