Как программно отключить автофокус веб-камеры?

Быстрый Помогите: Ctrl + 2, сопровождаемый F (присваивают полю), L (присваивают локальной переменной), и R (переименовывают в файле)

Последнее местоположение редактирования: Выезд Ctrl+Q

эта статья: http://dmy999.com/article/29/using-eclipse-efficiently

12
задан Cœur 2 November 2018 в 12:38
поделиться

1 ответ

Камеры Hercules совместимы с UVC, поэтому они должны работать с интерфейсом DirectShow IAMCameraControl . Вы можете установить фокус на определенное значение и использовать флаги, чтобы установить, что вы не хотите, чтобы это происходило автоматически. Вы можете использовать IAMCameraControl :: Get для опроса текущего состояния, потому что не все камеры поддерживают отключение фокуса.

IAMCameraControl *pCameraControl; 
HRESULT hr; 
hr = pFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); 
if (hr == S_OK) {
  long defaultFocusValue;
  hr = pCameraControl->GetRange(CameraControl_Focus,
                                NULL, // min
                                NULL, // max
                                NULL, // minstep
                                &defaultFocusValue, // default
                                NULL); // capflags
  hr = pCameraControl->Set(CameraControl_Focus, // property
                           defaultFocusValue, // value
                           CameraControl_Flags_Manual); 
} 

Фокус имеет диапазон, который определяется каждой камерой отдельно, поэтому вы должны запросить его как показано, чтобы найти значение по умолчанию и минимальное, максимальное, если хотите. В этом примере pFilter - это указатель на входной фильтр, который у вас есть от DirectShow. Вы можете получить его, перечислив устройства и найдя то, которое вам нужно.

11
ответ дан 2 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: