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
}
}
Отрегулируйте площадь в соответствии с вашими потребностями.