| New file |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, onMounted, ref } from "vue"; |
| | | import {base64toFile} from '@/samples/faceApi' |
| | | import { formatDate } from "@/utils/formatTime"; |
| | | import { confingInfoStore } from "@/stores/StoresConfing"; |
| | | |
| | | const msg = ref<string>("没识别到人脸..."); |
| | | const dialogVisible=ref(true) |
| | | const date=ref('') |
| | | let trackerTask: any = null; |
| | | const inputCode=ref('') |
| | | const inputRef = ref() |
| | | // 标识用的画布 |
| | | const myCanvas = ref<HTMLCanvasElement | null>(null); |
| | | let imgSrc:''; |
| | | // 实例人脸检查器 |
| | | const myTracker: any = new tracking.ObjectTracker("face"); |
| | | myTracker.setInitialScale(4); |
| | | myTracker.setStepSize(2); |
| | | myTracker.setEdgesDensity(0.1); |
| | | // 监听人脸检查器 |
| | | myTracker.on("track", (event: tracking.TrackEvent) => { |
| | | const context = myCanvas.value?.getContext("2d") as CanvasRenderingContext2D; |
| | | if (myCanvas.value) { |
| | | context.clearRect(0, 0, myCanvas.value.width, myCanvas.value.height); |
| | | } |
| | | if (event.data.length === 0) { |
| | | msg.value = "没识别到人脸..."; |
| | | } else if(event.data.length === 1) { |
| | | trackerTask.stop(); |
| | | msg.value = "检测到人脸"; |
| | | const myCanvas = document.getElementById("myCanvas");// |
| | | const thisContext = myCanvas?.getContext("2d"); |
| | | const myVideo = document.querySelector("#myVideo") as HTMLVideoElement; |
| | | thisContext.drawImage(myVideo, 0,0, 250, 200); |
| | | imgSrc = myCanvas?.toDataURL('image/png'); |
| | | // 转文件 |
| | | // 识别框显示才能到传阿里云识别 |
| | | if(dialogVisible.value){ |
| | | base64toFile(imgSrc) |
| | | } |
| | | setTimeout(() => { |
| | | console.log('监测到人脸后3s') |
| | | trackerTask.run(); |
| | | }, 3000); |
| | | // @ts-ignore |
| | | if (typeof window.stream === "object") { |
| | | myVideo.srcObject = null; |
| | | // @ts-ignore |
| | | window.stream.getTracks().forEach((track) => track.stop()); |
| | | } |
| | | } |
| | | }); |
| | | onMounted(() => { |
| | | // 触发人脸检查器 |
| | | console.log('人脸识别初始化') |
| | | const isUseFaceRecogService = confingInfoStore().confingInfo.isUseFaceRecogService |
| | | console.log('人脸识别',isUseFaceRecogService) |
| | | setInterval(function () { |
| | | date.value= formatDate(new Date(),'YYYY-mm-dd HH:MM') |
| | | }, 1000) |
| | | if (isUseFaceRecogService) { |
| | | console.log('开启人脸识别初始化') |
| | | setTimeout(()=>{ |
| | | trackerTask = tracking.track("#myVideo", myTracker, { camera: true }); |
| | | },2000) |
| | | |
| | | }else{ |
| | | console.log('关闭人脸识别') |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | </script> |