隨著HTML5技術的不斷發展,人臉識別已成為一個非常熱門的研究領域。HTML5實現人臉識別的代碼相較于傳統的人臉識別技術,具有更高的實時性和更便于使用的特點,使得人臉識別得以應用于更加廣泛的領域。
/* * 首先,引進必要的庫 *//* * 然后,定義一些需要用到的全局變量 */ var video = null; // 視頻流 var canvas = null; // canvas畫板 var context = null; // 畫板上下文 var videoWidth = 0; // 視頻寬度 var videoHeight = 0; // 視頻高度 /* * 初始化函數 */ function init() { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; video = document.getElementById('video'); canvas = document.getElementById('canvas'); context = canvas.getContext('2d'); navigator.getUserMedia({ video: true }, function (stream) { video.srcObject = stream; video.play(); }, function () { alert('拍照權限獲取失敗!'); }); video.addEventListener('play', function () { //添加play事件監聽器 videoWidth = video.videoWidth; videoHeight = video.videoHeight; canvas.width = videoWidth; canvas.height = videoHeight; setInterval(function () { //每隔1秒取一幀圖 context.drawImage(video, 0, 0, videoWidth, videoHeight); detectFace(); //開始人臉識別 }, 1000); }, false); } /* * 人臉識別函數 */ function detectFace() { var faces = null; faceapi.detectAllFaces(canvas).then(function (allFaces) { faces = allFaces; context.clearRect(0, 0, canvas.width, canvas.height); context.drawImage(video, 0, 0, videoWidth, videoHeight); if (faces.length >0) { context.strokeStyle = '#00ff00'; context.lineWidth = 2; context.beginPath(); context.rect(faces[0].box.left, faces[0].box.top, faces[0].box.width,faces[0].box.height); context.stroke(); } }); } /* * 最后,運行初始化函數 */ init();
通過以上代碼,我們可以實現html5人臉識別功能,只需通過視頻流,就能進行非常準確的人臉識別操作。而在面部識別技術的應用中,html5實現的人臉識別應用擁有更大的應用空間。