webRTC 实现人脸识别
首先我们需要先了解一下什么是webRTC 他能做什么 webRTC主要是帮我们处理多媒体应用,如音视频通话,屏幕共享都可以实现,主要基于浏览器API调用,其底层浏览器会调用native C++ 等一些库帮我们实现的,而我们在应用层掉API 即可。 桌面程序我们选择 tauri 而不是 electron
体积更小 electron 的 架构是 将 Node.js 集成到 Chromium 中 因此啥也不写打包完之后体积也有40-50MB 而 tauri 不在嵌入 nodejs + Chromium 前端使用 webview2 渲染,后端和操作系统集成这块使用rust实现,打包只有3MB。
安全方面,tauri 最终在打包之后会生成二进制文件,会增加破解难度,而electron 打包 会把node_modules打进去,增加了体积,而且没有加密。
自动更新 electron 和 tauir 都内置了自动更新 但是electron还是使用electron-updater 多一些,tauri 相比electron 就简单了tauri.app/zh-cn/v1/gu…
详细对比
安装rust
tauri 是基于 rust 的 我们需要先安装rust
下载rust www.rust-lang.org/learn/get-s…
根据自己的操作系统选择下载方式即可
安装完成之后会有 cargo 和 rustc 两个命令
cargo 就是 rust 的包管理工具 类似于npm cargo build 可以构建项目 cargo run 可以运行项目 cargo test 可以测试项目 cargo doc 可以为项目构建文档 cargo publish 可以将库发布到 crates.io。 构建tauri应用
pnpm create tauri-app |
选择对应的模板即可
构建完成之后 执行
★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。
见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
pnpm tauri dev
App.vue
<template><div><video controls ref="video" src=""></video><button @click="openVideo">开启摄像头</button></div> </template> <script lang="ts" setup> import { ref, reactive } from 'vue' const video = ref<HTMLVideoElement>() const openVideo = () => {//调用摄像头以及音频navigator.mediaDevices.getUserMedia({video:true,audio:true}).then(s=>{video.value!.srcObject = s}) } </script> <style lang="less" scoped> </style>
tips:如果读不到 mediaDevices 需要增加plist 文件
info.plist 跟 tauri.conf.json 平级即可
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict><key>NSCameraUsageDescription</key><string>请允许本程序访问您的摄像头</string></dict> </plist>
添加人脸识别API
模型下载地址 github.com/justadudewh…
face-api 下载地址
npm i face-api.js <template><div><video autoplay controls ref="video" src=""></video><canvas width="400" height="400" ref="canvas"></canvas><button @click="openVideo">开启摄像头</button></div> </template> <script lang="ts" setup> import { ref, onMounted } from 'vue' import * as faceapi from 'face-api.js'; const video = ref<HTMLVideoElement>() const canvas = ref<HTMLCanvasElement>() const models = './models'; (async () => {await Promise.all([faceapi.loadAgeGenderModel(models), //加载训练模型faceapi.loadFaceDetectionModel(models),//加载训练模型faceapi.loadFaceExpressionModel(models),//加载训练模型faceapi.loadTinyFaceDetectorModel(models),//加载训练模型faceapi.loadFaceRecognitionModel(models)//加载训练模型]) })() const openVideo = () => {navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(async s => {video.value!.srcObject = s}) const context = canvas.value?.getContext('2d')setInterval(async ()=>{context?.drawImage(video.value as any, 0, 0, 400, 400);//获取分析人脸的数据const detections = await faceapi.detectAllFaces(video.value as any, new faceapi.TinyFaceDetectorOptions())const resizedDetections = faceapi.resizeResults(detections, {width:400,height:400});//将人脸边框绘制到canvas上faceapi.draw.drawDetections(canvas.value as any, resizedDetections)},100) } </script> <style lang="less" scoped> </style>
作者:小满zs
★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。
见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
webRTC 实现人脸识别相关推荐
- 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...
- 身份验证错误错误指定的句柄无效_基于 Web 端的人脸识别身份验证「实践」
作者:沫沫 政采云前端团队 转发链接:https://mp.weixin.qq.com/s/fRDpXixnLIy9c0Uh2tMezQ 前言 近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸 ...
- 基于HTML5 的人脸识别技术
为什么80%的码农都做不了架构师?>>> 通过 HTML5 + JavaScript 技术实现的人脸识别,目前仅适用于 Chrome 浏览器,首先需要在地址栏输入 about: ...
- 用HTML5实现人脸识别
注:今天HTML5小组沙龙<论道HTML5>分享时有朋友问到一个问题,getUserMedia是否会支持人脸识别,我当时的答案是这应该是应用来实现的功能,而不是规范要完成的工作.而我之前在 ...
- 基于 Web 端的人脸识别身份验证
效果展示 人脸识别效果图 前言 近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸识别技术取得了突破性进展,准确率显著提高.现阶段,人脸识别身份验证作为非常重要的身份验证方式,已被广泛的应用于诸 ...
- 人脸识别(一)调用face++实现人脸检测
2017年下半年以来,随着iPhoneX的人脸解锁功能把人脸识别这一黑科技带入大家的视野中之后,各种有关人脸识别功能的新闻和报道层出不穷.不仅是对普通群众来说,对我们程序猿来说,百度,微软,阿里等各大 ...
- 共有65款 计算机视觉库/人脸识别开源软件
转载:https://www.cnblogs.com/Anita9002/p/5038533.html. 引自:http://www.oschina.net/project/tag/316/openc ...
- 人脸识别(一)调用face++实现人脸检测。
2017年下半年以来,随着iPhoneX的人脸解锁功能把人脸识别这一黑科技带入大家的视野中之后,各种有关人脸识别功能的新闻和报道层出不穷.不仅是对普通群众来说,对我们程序猿来说,百度,微软,阿里等各大 ...
- 计算机视觉库/人脸识别开源软件
中文车牌识别系统 EasyPR EasyPR 是一个开源的中文车牌识别系统. EasyPR是一个中文的开源车牌识别系统,其目标是成为一个简单.灵活.准确的车牌识别引擎. 相比于其他的车牌识别系统,Ea ...
最新文章
- 只服这篇“神文”:基于老子哲学、相对论的超级人工智能模型
- PXE自动化安装系统
- push and pop
- 第二周 数据分析之展示 Matplotlib基础绘图函数实例
- kinect:0x80080014
- C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
- WPF触发器(Trigger)
- Java取得操作系统的临时目录
- java list 数据分离_Java(Android)数据结构汇总(一)-- List(下)
- Hadoop高级培训课程大纲-开发者版
- linux 查看当前表空间大小,查看表空间和表的使用率
- 同花顺程序交易接口type-c为什么没普及?
- 机器学习最常用的算法
- Himawari-8葵花8标准数据(HSD)文件命名规则
- 新侨快讯:官方公布加拿大时薪最高和最低的工作,你的行业上榜吗?
- html三角形下拉列表,select自定义小三角样式代码(实用总结)
- xp桌面计算机隐藏设置密码,电脑设置开机密码详解 保护自己的隐私不受窥探-电脑设置开机密码...
- Android系统优化
- MOD函数的使用方法
- 电脑开不了机启动不了|开机黑屏只有光标再闪