浏览器中玩人脸识别

栏目: 编程工具 · 发布时间: 5年前

内容简介:其实浏览器中的人脸识别 API 已经发布有一段时间了,从Chrome 70 版本以上就有了。其中包括了人脸,文本或 QR 码的识别,基本上覆盖了当前互联网应用的大部分场景。随着云服务的发展,现在很多跟图像识别相关的服务基本都集成在了图形识别这种对系统资源和设备的计算能力要求颇高的功能,通常只有底层的原生 API 能驾驭,流行的框架主要是开源的Open CV和各大移动平台的图形识别服务,浏览器层面主要有三个 API:

背景

其实浏览器中的人脸识别 API 已经发布有一段时间了,从Chrome 70 版本以上就有了。其中包括了人脸,文本或 QR 码的识别,基本上覆盖了当前互联网应用的大部分场景。

随着云服务的发展,现在很多跟图像识别相关的服务基本都集成在了 云服务 之中,前端的使用场景其实还是相对来说比较偏弱,但是对于各种爱折腾的前端er来说,玩玩还是可以的,不然怎么能满足内心那盛开的好奇心呢。

Shape Detection API

图形识别这种对系统资源和设备的计算能力要求颇高的功能,通常只有底层的原生 API 能驾驭,流行的框架主要是开源的Open CV和各大移动平台的图形识别服务,浏览器层面主要有三个 API:

在 Console 控制台输入以下 JavaScript代码,就能验证你的浏览器是否支持相应的 API 了:

window.BarcodeDetector
window.FaceDetector
window.TextDetector

巨蟹栗子:

:one:条形码: Barcode Detection

const barcodeDetector = new BarcodeDetector();
barcodeDetector.detect(image)
  .then(barcodes => {
    barcodes.forEach(barcode => console.log(barcodes.rawValue))
  })
  .catch(err => console.error(err));

:two:人脸:Face Detection

const faceDetector = new FaceDetector();
faceDetector.detect(image)
  .then(faces => faces.forEach(face => console.log(face)))
  .catch(err => console.error(err));

:three:文本:Text Detection

const textDetector = new TextDetector();
textDetector.detect(image)
  .then(boundingBoxes => {
    for(let box of boundingBoxes) {
      speechSynthesis.speak(new SpeechSynthesisUtterance(box.rawValue));
    }
  })
  .catch(err => console.error(err));

浏览器中的人脸识别

浏览器中使用人脸识别其实原理比较简单,使用一个图片作为入参,然后调用 FaceDetector 就可以进行简单的人脸识别了,最后我们可以通过 canvas 对结果进行输出。

浏览器中玩人脸识别

const detectFace = () => {
  if(!window.FaceDetector) return console.log('Unsupported Version or Feature is not enabled')
  const img = document.querySelector('#targetImg');
  const faceDetector = new FaceDetector();
  const scale = img.width / img.naturalWidth;
  faceDetector
    .detect(img)
    .then(faces => 
      faces.map(face => face.boundingBox)
    )
    .then(faceBoxes => {
      faceBoxes.forEach(faceBox => {
        const { 
          height, width, top, left 
        } = faceBox;
        const div = drawFaceBox(
          height, width, top, left, scale
        );
        img.parentElement.appendChild(div);
      });
    })
    .catch(err => console.log(err));
};

const drawFaceBox = (height, width, top, left, scale) => {
  const div = document.createElement('div');
  div.className = 'face-box';
  div.style.cssText = `
    top: ${top * scale}px;
    left: ${left * scale}px;
    height: ${height * scale}px;
    width: ${width * scale}px;
  `;
  return div;
};

const clearFaceBox = () => {
  [...document.getElementsByClassName('face-box')].forEach(e => e.remove());
};

window.onload = () => {
  clearFaceBox();
  detectFace();
};
window.onresize = () => {
  clearFaceBox();
  detectFace();
};

以上所述就是小编给大家介绍的《浏览器中玩人脸识别》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

周鸿祎自述

周鸿祎自述

周鸿祎 / 中信出版社 / 2014-8 / 45.00元

在很多方面,周鸿祎都是互联网领域的颠覆者。他重新定义了“微创新”,提出从细微之处着手,通过聚焦战略,以持续的创新,最终改变市场格局、为客户创造全新价值。他第一个提出了互联网免费安全的理念,也由此让奇虎360拥有了超过4亿的用户。 在《周鸿祎自述:我的互联网方法论》中,周鸿祎首次讲述了自己的互联网观、产品观和管理思想,厘清了互联网产品的本质特征和互联网时代的新趋势,列举了颠覆式创新在现实中的实......一起来看看 《周鸿祎自述》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具