首先我们需要先了解一下什么是webRTC 他能做什么 webRTC主要是帮我们处理多媒体应用,如音视频通话,屏幕共享都可以实现,主要基于浏览器API调用,其底层浏览器会调用native C++ 等一些库帮我们实现的,而我们在应用层掉API 即可。 桌面程序我们选择 tauri 而不是 electron

  1. 体积更小 electron 的 架构是 将 Node.js 集成到 Chromium 中 因此啥也不写打包完之后体积也有40-50MB 而 tauri 不在嵌入 nodejs + Chromium 前端使用 webview2 渲染,后端和操作系统集成这块使用rust实现,打包只有3MB。

  2. 安全方面,tauri 最终在打包之后会生成二进制文件,会增加破解难度,而electron 打包 会把node_modules打进去,增加了体积,而且没有加密。

  3. 自动更新 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 实现人脸识别相关推荐

  1. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别

    这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...

  2. 身份验证错误错误指定的句柄无效_基于 Web 端的人脸识别身份验证「实践」

    作者:沫沫 政采云前端团队 转发链接:https://mp.weixin.qq.com/s/fRDpXixnLIy9c0Uh2tMezQ 前言 近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸 ...

  3. 基于HTML5 的人脸识别技术

    为什么80%的码农都做不了架构师?>>>    通过 HTML5 + JavaScript 技术实现的人脸识别,目前仅适用于 Chrome 浏览器,首先需要在地址栏输入 about: ...

  4. 用HTML5实现人脸识别

    注:今天HTML5小组沙龙<论道HTML5>分享时有朋友问到一个问题,getUserMedia是否会支持人脸识别,我当时的答案是这应该是应用来实现的功能,而不是规范要完成的工作.而我之前在 ...

  5. 基于 Web 端的人脸识别身份验证

    效果展示 人脸识别效果图 前言 近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸识别技术取得了突破性进展,准确率显著提高.现阶段,人脸识别身份验证作为非常重要的身份验证方式,已被广泛的应用于诸 ...

  6. 人脸识别(一)调用face++实现人脸检测

    2017年下半年以来,随着iPhoneX的人脸解锁功能把人脸识别这一黑科技带入大家的视野中之后,各种有关人脸识别功能的新闻和报道层出不穷.不仅是对普通群众来说,对我们程序猿来说,百度,微软,阿里等各大 ...

  7. 共有65款 计算机视觉库/人脸识别开源软件

    转载:https://www.cnblogs.com/Anita9002/p/5038533.html. 引自:http://www.oschina.net/project/tag/316/openc ...

  8. 人脸识别(一)调用face++实现人脸检测。

    2017年下半年以来,随着iPhoneX的人脸解锁功能把人脸识别这一黑科技带入大家的视野中之后,各种有关人脸识别功能的新闻和报道层出不穷.不仅是对普通群众来说,对我们程序猿来说,百度,微软,阿里等各大 ...

  9. 计算机视觉库/人脸识别开源软件

    中文车牌识别系统 EasyPR EasyPR 是一个开源的中文车牌识别系统. EasyPR是一个中文的开源车牌识别系统,其目标是成为一个简单.灵活.准确的车牌识别引擎. 相比于其他的车牌识别系统,Ea ...

最新文章

  1. 只服这篇“神文”:基于老子哲学、相对论的超级人工智能模型
  2. PXE自动化安装系统
  3. push and pop
  4. 第二周 数据分析之展示 Matplotlib基础绘图函数实例
  5. kinect:0x80080014
  6. C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
  7. WPF触发器(Trigger)
  8. Java取得操作系统的临时目录
  9. java list 数据分离_Java(Android)数据结构汇总(一)-- List(下)
  10. Hadoop高级培训课程大纲-开发者版
  11. linux 查看当前表空间大小,查看表空间和表的使用率
  12. 同花顺程序交易接口type-c为什么没普及?
  13. 机器学习最常用的算法
  14. Himawari-8葵花8标准数据(HSD)文件命名规则
  15. 新侨快讯:官方公布加拿大时薪最高和最低的工作,你的行业上榜吗?
  16. html三角形下拉列表,select自定义小三角样式代码(实用总结)
  17. xp桌面计算机隐藏设置密码,电脑设置开机密码详解 保护自己的隐私不受窥探-电脑设置开机密码...
  18. Android系统优化
  19. MOD函数的使用方法
  20. 电脑开不了机启动不了|开机黑屏只有光标再闪

热门文章

  1. 在B端供应链上,看见企业增长的「密码」
  2. AutoLayout 使用详细
  3. 使用VirtualBox+Vagrant搭建自己的Laravel开发环境
  4. 全面整理的C++面试题
  5. 九度1035:找出直系亲属并查集
  6. 计算机高职对口要考ps吗,高职高考与自主招生有什么不同
  7. JavaScript 利用搜索引擎引用高亮页面关键字
  8. 非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法
  9. html input 禁止输入中文
  10. 重做Unbuntu 18.0.43 LTS系统 并为SLAM配置环境