【发布时间】:2017-04-24 04:14:37
【问题描述】:
请问有没有使用getUserMedia进行相机对焦的功能?我正在使用 QuaggaJS 项目 - https://serratus.github.io/quaggaJS/examples/live_w_locator.html
我想做的是将焦点放在相机上,因为它有点模糊并且无法检测到条形码。有谁知道可以吗?
谢谢!
【问题讨论】:
标签: jquery getusermedia
请问有没有使用getUserMedia进行相机对焦的功能?我正在使用 QuaggaJS 项目 - https://serratus.github.io/quaggaJS/examples/live_w_locator.html
我想做的是将焦点放在相机上,因为它有点模糊并且无法检测到条形码。有谁知道可以吗?
谢谢!
【问题讨论】:
标签: jquery getusermedia
首先 - 虽然这里可能是不好的做法 - 我将链接到为什么 MediaCapture 可能比预期的模糊或颗粒状:
简而言之:MediaCapture 对媒体源进行了大量转换,这可能会导致图像模糊或有颗粒感。传递给 getUserMedia 的 MediaConstraints 对象不允许您指定焦点位置。这取决于浏览器,通常应该在中心附近。
要解决这个问题,请使用 ImageCapture:
ImageCapture API 可以控制相机功能,例如 变焦、亮度、对比度、ISO 和白平衡。最重要的是,图像 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 polyfill:https://www.npmjs.com/package/webrtc-adapter
希望对你有帮助
【讨论】:
如果焦点不能很好地工作。您可以使用 locate 进行测试:false。定位的默认值为 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
}
}
根据需要调整区域。
【讨论】: