内容简介:其实浏览器中的人脸识别 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();
};
以上所述就是小编给大家介绍的《浏览器中玩人脸识别》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ACM/ICPC程序设计与分析
沈云付 / 清华大学 / 2010-7 / 39.50元
《ACM/ICPC程序设计与分析(C++实现)》介绍ACM国际大学生程序设计竞赛概况及程序设计基础,系统介绍数论、组合数学、动态规划、计算几何、搜索、图论和网络流等专题的典型算法,挑选历年竞赛中许多有代表性的竞赛题作为例题进行分析,便于学生编程时模仿学习。每章的例题和习题都配有输入输出样例,方便学生在编程时测试与调试程序。《ACM/ICPC程序设计与分析(C++实现)》以C++为程序设计语言,以提......一起来看看 《ACM/ICPC程序设计与分析》 这本书的介绍吧!