您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“vue2+tracking怎么實(shí)現(xiàn)PC端的人臉識(shí)別”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
上傳患者真實(shí)頭像,可以有兩種選擇,一種是通過常規(guī)的文件選擇方式上傳,第二種方式就是醫(yī)生可以調(diào)用電腦的攝像頭拍一張然后上傳。
常規(guī)的就不用分析了,只分析第二種:
調(diào)用本地?cái)z像頭
然后可以進(jìn)行拍照
因?yàn)槭腔颊叩恼鎸?shí)頭像,方便辨認(rèn),要求要拍到患者臉部
檢測(cè)到患者臉部,自動(dòng)截圖,醫(yī)生只需要點(diǎn)擊上傳即可
首先看有不有能識(shí)別到患者臉部的前端第三方庫,如果沒有,這個(gè)需求就相對(duì)來說就麻煩一點(diǎn),就是在拍照的時(shí)候需要醫(yī)生辨別能否達(dá)到上傳的要求,然后再拍照上傳也行。
基于上面的思路,開始尋找,最后確定使用 tracking.js 它的 github 地址
安裝:yarn add tracking
使用,用一個(gè)測(cè)試 demo 來展示:
src/components/TestFace.vue
<template> <div> <div> <p>請(qǐng)將攝像頭對(duì)準(zhǔn)患者臉部</p> <video id="video" autoplay></video> </div> <div> <p>檢測(cè)人臉結(jié)果</p> <canvas id="canvas" width="200" height="200" ></canvas> </div> </div> </template> <script> import { userMedia } from '../utils/utils' require('tracking/build/tracking-min.js') require('tracking/build/data/face-min.js') export default { data () { return { videoObj: null, trackerTask: null } }, mounted () { this.openCamera() }, methods: { openCamera () { // 有可能觸發(fā)一些其他的按鈕會(huì)重新獲取 this.$nextTick(() => { const canvas = document.getElementById('canvas') const context = canvas.getContext('2d') this.videoObj = document.getElementById('video') // eslint-disable-next-line no-undef const tracker = new tracking.ObjectTracker('face') // 檢測(cè)人臉 tracker.setInitialScale(4) tracker.setStepSize(2) tracker.setEdgesDensity(0.1) // eslint-disable-next-line no-undef this.trackerTask = tracking.track('#video', tracker, { camera: true }) const constraints = { video: { width: 200, height: 200 }, audio: false } userMedia(constraints, this.success, this.error) tracker.on('track', (event) => { event.data.forEach((rect) => { // 繪制到 canvas context.drawImage(this.videoObj, 0, 0, canvas.width, canvas.height) context.font = '16px Helvetica' context.strokeStyle = '#1890ff' context.strokeRect(rect.x, rect.y, rect.width, rect.height) }) if (event.data.length !== 0) { // 說明檢測(cè)到人臉了,此時(shí)就可以截取圖片傳遞給后端 // canvas 調(diào)用 toDataURL } }) }) }, handleCancel () { this.videoObj.srcObject.getTracks()[0].stop() this.trackerTask.stop() }, // 成功顯示 success (stream) { this.videoObj.srcObject = stream this.videoObj.play() }, // 失敗拋出錯(cuò)誤,可能用戶電腦沒有攝像頭,或者攝像頭權(quán)限沒有打開 error (error) { // 可以在這里面提示用戶 console.log(`訪問用戶媒體設(shè)備失敗${error.name}, ${error.message}`) } }, beforeDestroy () { this.handleCancel() } } </script>
src/utils/utils.js
export let userMedia = function (constraints, success, error) { if (navigator.mediaDevices.getUserMedia) { userMedia = function (constraints, success, error) { navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error) } } else if (navigator.webkitGetUserMedia) { userMedia = function (constraints, success, error) { navigator.webkitGetUserMedia(constraints, success, error) } } else if (navigator.mozGetUserMedia) { userMedia = function (constraints, success, error) { navigator.mozGetUserMedia(constraints, success, error) } } else if (navigator.getUserMedia) { userMedia = function (constraints, success, error) { navigator.getUserMedia(constraints, success, error) } } userMedia(constraints, success, error) }
最終的效果如下:
首先確保有攝像頭
有時(shí)候本地調(diào)試無法打開攝像頭,可以在瀏覽器上輸入:chrome://flags/#unsafely-treat-insecure-origin-as-secure
然后會(huì)出現(xiàn)如下頁面,再操作即可:
“vue2+tracking怎么實(shí)現(xiàn)PC端的人臉識(shí)別”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。