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