getUserMedia锁定焦点/曝光
getUserMedia lock focus/exposure
我使用带约束的navigator.getUserMedia
访问用户的网络摄像头,使用提要作为HTML <video>
的源,然后将其流复制到drawImage
<canvas>
上下文。我这么做是为了每隔一段时间拍一张快照。
我想做的是,一旦页面开始拍摄快照,锁定getUserMedia相机的焦点/曝光,这样在快照间隔之间,环境可以发生变化,而不会改变光平衡或相机重新聚焦。
有人知道这在JS方面是否可行吗?
标记为的副本:当相机自动对焦时拍照
首先——尽管这里可能是糟糕的做法——我将链接到为什么MediaCapture可能比预期的模糊或颗粒状:
为什么iPad/iOS上的原生相机分辨率与getUserMedia有差异?
简而言之:MediaCapture对媒体源进行了大量转换,这可能会导致图像模糊或颗粒状。
要解决此问题,请使用ImageCapture:
ImageCapture API能够控制相机功能,例如变焦、亮度、对比度、ISO和白平衡。最棒的是,图像捕获允许您访问任何可用的设备摄像头或网络摄像头。以前的服用技巧网络上的照片使用了视频快照分辨率高于静止图像的分辨率。
解决您的问题:
你可以通过用户体验和缩放滑块来解决这个问题。以下是有关如何使用ImageCapture(静态图像)实现此功能的信息。MediaCapture(视频源)不允许此功能。你可以使用MediaCapture,并有一个按钮,如"手动模式",允许用户选择正确的变焦来拍摄照片。
您还可以通过每次更新执行n个ImageCaptures的更新循环来"模拟"相机,并使用缩放滑块。
https://developers.google.com/web/updates/2016/12/imagecapture
下面是一个关于如何使用它/polyfill的示例:https://github.com/GoogleChromeLabs/imagecapture-polyfill
请确保使用最新的getUserMedia polyfills来处理跨平台支持:https://www.npmjs.com/package/webrtc-adapter
希望这能帮助
我们不久前也遇到了同样的问题。它只发生在某些设备上。。。但即使是同一品牌的设备也有不同的行为。浏览器/OS版本/驱动程序组合中的某些内容已损坏。在一些设备中,焦点被锁定,而在另一些设备中则没有。我们查看了所有API,在初始化代码中尝试了几十种变体,但最终我们得出结论,没有明显的解决方案。
我们添加了一个重新启动所有程序的按钮,以某种方式缓解问题。。。
- keyup事件处理程序更改焦点不适用于快速键入
- 单击时将焦点更改为元素
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在IE9中的输入字段中输入焦点最近按钮
- Javascript游戏输入失去焦点
- ExtJS网格单元格编辑器,防止焦点松动问题
- 检查元素是如何获得焦点的
- angularjs移除焦点上的活动类并添加到下一个项目
- Don'不允许将焦点集中在自动完成的选择上
- 当点击另一件事时,将焦点设置为一件事
- 文本框焦点上的自动完成菜单
- 如何检测哪个窗口是焦点
- 可以't从Youtube IFrame更改焦点
- 在jAlert之后设置焦点
- 在文本区域的焦点上分割渐变
- 使用Redux和React添加焦点更改类
- iFrames并再次检测焦点
- 如何获得React Native TextInput以在提交后保持焦点
- 在没有焦点的情况下捕获画布上的第一次单击事件
- getUserMedia锁定焦点/曝光