getUserMedia() Фокус камеры

Я хотел бы спросить, если есть функция для фокусировки камеры, используя getUserMedia? Я использую проект QuaggaJS - https://serratus.github.io/quaggaJS/examples/live_w_locator.html

Я хотел бы сфокусироваться на камере, потому что она немного размыта и не может обнаружить штрих-код. Кто-нибудь знает, возможно ли это?

Спасибо!

1 ответ

Во-первых - хотя, возможно, здесь это плохая практика - я расскажу, почему MediaCapture может быть размытым или зернистым, чем ожидалось:

Вкратце: MediaCapture выполняет множество преобразований в источнике мультимедиа, что может вызвать размытость или зернистость изображений. Объект MediaConstraints, который передается в getUserMedia, не позволяет вам указать, где сосредоточиться. Это зависит от браузера и обычно должно быть по центру.

Чтобы решить эту проблему, используйте ImageCapture:

API ImageCapture позволяет управлять такими функциями камеры, как масштабирование, яркость, контрастность, ISO и баланс белого. Лучше всего то, что Image Capture позволяет вам получить доступ к возможностям полного разрешения любой доступной камеры устройства или веб-камеры. Предыдущие методы фотосъемки в Интернете использовали моментальные снимки видео, разрешение которых ниже, чем у неподвижных изображений.

Чтобы решить вашу проблему:

Если QuaggaJS не использует ImageCapture, то это невозможно. Если это так, вы можете решить эту проблему с помощью UX и ползунка масштабирования. Ниже приведена информация о том, как этого добиться с помощью ImageCapture (неподвижные изображения). MediaCapture (видеопоток) не поддерживает эту функцию. Вы можете использовать ImageCapture и иметь такую ​​кнопку, как "Ручной режим", которая позволяет пользователю выбрать правильный масштаб для съемки фотографии.

Вы также можете "эмулировать" камеру, имея цикл обновления, выполняющий n ImageCapture за каждое обновление.

https://developers.google.com/web/updates/2016/12/imagecapture

А вот пример того, как его использовать / polyfill: https://github.com/GoogleChromeLabs/imagecapture-polyfill

Убедитесь, что вы используете последние полифиллы getUserMedia, которые обеспечивают кроссплатформенную поддержку: https://www.npmjs.com/package/webrtc-adapter

Надеюсь это поможет

Если фокус работает не очень хорошо. Вы можете выполнить тестирование с помощью locate: false. Значение по умолчанию для locate - true.

{
  locate: false,
  area: { // defines rectangle of the detection/localization area
    top: "30%",   // top offset
    right: "30%",  // right offset
    left: "30%",   // left offset
    bottom: "30%"  // bottom offset
  }
}

Отрегулируйте площадь в соответствии с вашими потребностями.

Другие вопросы по тегам