【代码学习】Mediapipe人脸检测使用记录

Mediapipe,每秒200-300帧的实时人脸检测,提取画面中的人脸框,实现后续各种应用:人脸属性识别、表情识别、关键点检测、三维重建、增强现实、AI换妆等

code:google/mediapipe: Cross-platform, customizable ML solutions for live and streaming media. (github.com)

理论

  检测到的人脸集合,其中每个人脸都表示为一个检测原型消息,其中包含一个边界框和 6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳和左耳)。边界框由xminwidth(均由[0.0, 1.0]图像宽度归一化)和ymin和(均由图像高度height归一化)组成。[0.0, 1.0]每个关键点由x和组成,分别由图像宽度和高度y归一化。[0.0, 1.0]


import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
# For webcam input:
cap = cv2.VideoCapture(0)
with mp_face_detection.FaceDetection(model_selection=0, min_detection_confidence=0.5) as face_detection:while cap.isOpened():success, image = cap.read()if not success:print("Ignoring empty camera frame.")# If loading a video, use 'break' instead of 'continue'.continue# To improve performance, optionally mark the image as not writeable to# pass by reference.image.flags.writeable = Falseimage = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)results = face_detection.process(image)# Draw the face detection annotations on the image.image.flags.writeable = Trueimage = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)if results.detections:for detection in results.detections:mp_drawing.draw_detection(image, detection)# Flip the image horizontally for a selfie-view display.cv2.imshow('MediaPipe Face Detection', cv2.flip(image, 1))if cv2.waitKey(5) & 0xFF == 27:break
cap.release()
复制代码

468个人脸关键点:

 

Diffusion Video Editing

结合论文:Speech Driven Video Editing via an Audio-Conditioned Diffusion Model

video preprocess

每个视频帧需要有一个矩形区域的脸掩盖。使用mediapipe,提取面部landmark来确定颌骨的位置。使用这些信息,mask掉覆盖鼻子下方区域的脸部矩形部分,如图1所示。这个掩码是在数据加载器运行时计算并应用到帧上的。

参考:一起来学MediaPipe(一)人脸及五官定位检测-阿里云开发者社区 (aliyun.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中,#define和const有什么区别? / 静态链接和动态链接有什么区别?

一、C中,#define和const有什么区别? C中,#define和const都用于定义常量,但它们在用法和特性上存在显著的区别。 定义与用途: #define是C预处理器的指令,用于定义宏。宏可以是函数、对象、类型等&#xf…

国内区块链公司哪个好

目录 1. 蚂蚁金服(Ant Financial) 2. 腾讯(Tencent) 3. 阿里巴巴(Alibaba) 4. 海尔智家(Haier Smart Home

Java异常类型及异常处理方式

本章学习内容:使用异常处理机制,对程序运行过程中出现的异常情况进行捕捉并处理. 目录 📌 Java异常概述 📌 Java异常体系结构 📌 常见的异常 📌 异常处理 📌 Java异常概述 ○ 异常的概念&…

【力扣】55.跳跃游戏、45.跳跃游戏Ⅱ

55.跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1&a…

数据库管理-第163期 19c重建ADG的两个方法(20240323

数据库管理163期 2024-03-23 数据库管理-第163期 19c重建ADG的两个方法(20240323)1 ORA-081032 新办法1 关闭MRP2 恢复备库3 其他操作4 启动备库5 启动MRP 3 老办法4 预告总结 数据库管理-第163期 19c重建ADG的两个方法(20240323)…

vscode配置c/c++调试环境

本文记录win平台使用vscode远程连接ubuntu server服务器下,如何配置c/c调试环境。 过程 1. 服务器配置编译环境 这里的前置条件是vscode已经能够连接到服务器,第一步安装编译构建套件(gcc、g、make、链接器等)和调试器&#xf…

vue3之生命周期

Vue3之生命周期 主要Vue生命周期事件被分为两个钩子,分别在事件之前和之后调用,vue应用程序中有4个主要事件(8个钩子): 创建 ---- 在组建创建时执行挂载 ---- DOM被挂载时执行更新 ---- 当响应数据被修改时执行销毁 ---- 在元素被销毁之前立…

深度学习模型部署(十一)TensorRT写Plugin

什么是plugin & 有什么用? TensorRT的一种机制,以.so的形式插入到网络中实现某些算子。 作用: 实现TensorRT不支持的层替换性能不好的层手动进行图优化算子融合 写Plugin就是自己写算子的CUDA kernel实现。 Plugin与其他layer之间无法…

【数据结构】顺序表和链表详解顺序表和链表的实现

主页:醋溜马桶圈-CSDN博客 专栏:数据结构_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.线性表 1.1 顺序表 1.1.1 概念及结构 1.1.2 静态顺序表 1.1.3 动态顺序表 1.2 链表 1.2.1 链表的概念及结构 1.2.2 链表…

馆室一体化查档平台制度有哪些

馆室一体化查档平台制度是指图书馆或档案馆在数字化和信息化的背景下,建立起的集查阅、借阅、咨询、文献传递等多项功能于一体的平台制度。下面是一些常见的馆室一体化查档平台制度: 1. 馆藏管理制度:包括图书和档案的采购、编目、分类、整理…

详解rtklib中main函数如何配置文件(下)

目录 一、main函数流程总结 二、分析识别 -k 后如何配置 三、最后传参的数据文件处理方式 一、main函数流程总结 详解rtklib中main函数如何配置文件(上)-CSDN博客 在这片文章中讲解了rtklib中main函数的整个流程。 (1)通过…

最长上升子序列

一、题目描述 B3637 最长上升子序列 二、问题简析 2.1 法一: O ( N 2 ) O(N^2) O(N2) 令 d p [ i ] dp[i] dp[i] 以 a i a_i ai​ 结尾的上升子序列的最大长度。 以 a i a_i ai​ 结尾的上升子序列有两种可能: 1、仅有 a i a_i ai​ 一个元素2…

保研复习概率论2

1.什么是随机变量的数学期望(expected value)? 如果X是离散型随机变量,其分布列为piP{Xxi}(i1,2...),若级数绝对收敛,则称随机变量X的数学期望存在,并将的和称为随机变量X的数学期望&#xff0…

5.5.7、【AI技术新纪元:Spring AI解码】Redis

Redis Redis 是一款开源(BSD 许可)的内存数据结构存储系统,可用作数据库、缓存、消息代理以及流处理引擎。Redis 提供了诸如字符串、哈希表、列表、集合、带范围查询的有序集合、位图、HyperLogLogs、地理空间索引和流等多种数据结构。 Redis 向量搜索 Redis 向量搜索与查…

【C++】每日一题 位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为汉明重量&#xff09;。 #include <iostream> #include <cstdint>int hammingWeight(uint3…

汇编语言中的MVC

一 MVC指令 1&#xff0e;移动字符串指令MVC 移动字符串指令MVC的格式为&#xff1a; MVC D1(L,B1),D2(B2) (移动字符串) 功能&#xff1a;&#xff08;D1&#xff08;B1&#xff09;&#xff09; ← &#xff08;D2&#xff08;B2&#xff09;&#xff09; L个字符 指令的执行…

React面试总结

React中JSX转换为真实Dom的过程 可以从几个大体过程来看 jsx语法解析 jsx语法解析成js代表的对象&#xff0c;即把jsx语法转换为基于js的React.createElement(args1,args2,args3)&#xff0c;args1,args2,args3分别是标签类型、属性和标签内容&#xff0c;主要利用的是babel等…

leetcode 316.去除重复字母

思路&#xff1a;贪心单调栈。 这道题和前几天做的那道“删除k位数字”那道题很像。 这里由于是按照字典序进行输出的&#xff0c;而且删除的地方我们也不知道&#xff0c;是随机的&#xff0c;这个时候其实就应该想到用单调栈进行解答&#xff0c;其实这样才能进行很好的存储…

COPY requires at least two arguments, docker COPY 报错

COPY requires at least two arguments # 使用 Node.js 12.16.0FROM node:12.16.0WORKDIR /appCOPY ..原因&#xff1a;Dockerfile文件COPY后的两个. 要加空格 本内容来源于小豆包&#xff0c;想要更多内容请跳转小豆包 》

【Frida】【Android】01_手把手教你环境搭建

▒ 目录 ▒ &#x1f6eb; 导读开发环境 1️⃣ 环境搭建安装Android模拟器安装Frida CLI安装Frida Server端口重定向&#xff1a;adb forward 2️⃣ 运行测试spwan模式attach模式直接加载脚本 &#x1f4d6; 参考资料 &#x1f6eb; 导读 开发环境 版本号描述文章日期2024-03…