基于mediapipe进行的脸部特征点标记

采用方法

主要使用google 的 mediapipe 工具包中的face_mesh模块和opencv中的显示标识模块

使用事项

文中的1.flv 可以换成其他格式的视频。

代码如下

import cv2
import mediapipe as mp
import timeclass FaceMashDetector(object):def __init__(self, mode=False, max_num=2, detection=0.5, tracking=0.5):self.mode = modeself.max_num = max_numself.detection = detectionself.tracking = trackingself.mpFaceMesh = mp.solutions.face_meshself.face = self.mpFaceMesh.FaceMesh(self.mode, self.max_num, self.detection, self.tracking)self.mpDraw = mp.solutions.drawing_utilsself.drawSpec = self.mpDraw.DrawingSpec(thickness=1, circle_radius=2)def findPose(self, img, draw=True):imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)self.results = self.face.process(imgRGB)if self.results.multi_face_landmarks:for faceLms in self.results.multi_face_landmarks:if draw:self.mpDraw.draw_landmarks(img, faceLms, self.mpFaceMesh.FACE_CONNECTIONS, self.drawSpec,self.drawSpec)return imgdef findPosition(self, img, handNo=0, draw=True):lmList = []if self.results.multi_face_landmarks:myFace = self.results.multi_face_landmarks[handNo]for id, lm in enumerate(myFace.landmark):h, w, c = img.shapecx, cy = int(lm.x * w), int(lm.y * h)lmList.append((id, cx, cy))if draw:cv2.circle(img, (cx, cy), 10, (255, 0, 255), cv2.FILLED)return lmListdef main():pTime = 0cap = cv2.VideoCapture('1.flv')detector = FaceMashDetector()while True:success, img = cap.read()img = detector.findPose(img)lmList = detector.findPosition(img, draw=False)cTime = time.time()fps = 1 / (cTime - pTime)pTime = cTimecv2.putText(img, f"fps:{int(fps)}", (10, 70), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 255), 3)cv2.imshow('Image', img)cv2.waitKey(10)if __name__ == '__main__':main()

mediapipe系列之一脸部特征点标记相关推荐

  1. 图像配准系列之“Sift特征点+薄板样条变换+FFD变换”配准方法

    上篇文章中我们讲了"Sift+TPS"的配准方法: 图像配准系列之"Sift特征点+薄板样条变换"配准方法 我们知道,TPS薄板样条变换(简称TPS变换)与FF ...

  2. 特征工程系列:自动化特征构造

    特征工程系列:自动化特征构造 原创: JunLiang 木东居士  今天 0x00 前言 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.由此可见,特征工程在机器学习中占有相当重要的 ...

  3. [特征工程系列二]显性特征的基本处理方法

    今天接着前一篇文章讲,主要分享基于显性特征工程的一些最基本的处理方法.关于显性特征是什么,大家可以去看系列文章一.关于显性特征的处理方法可以做这样的类比:不知道大家平时会不会自己做菜,我个人的话基本每 ...

  4. [特征工程系列一] 论特征的重要性

    满打满算,还有十天左右就要过年了,这些天大家或多或少都有点浮躁.反过来想,趁大家都懈怠的时候,正是学习的最佳时机.趁着这几天,也给自己加点码,去认真的再看一下特征工程.我给自己列了下面的这一份学习清单 ...

  5. OpenCV系列之理解特征 | 三十六

    目标 在本章中,我们将尝试理解什么是特征,为什么拐角重要等等 解释 你们大多数人都会玩拼图游戏.你会得到很多小图像,需要正确组装它们以形成大的真实图像.问题是,你怎么做?将相同的理论投影到计算机程序上 ...

  6. 机器学习系列 5:特征缩放

    https://www.toutiao.com/a6693032631371563528/ 首先我们应该了解一下多元线性回归.相比于单变量线性回归,该函数拥有多个变量值,那么他所拥有的参数就不仅仅是一 ...

  7. [特征工程系列三]显性特征的衍生

    前一文讲的是一些特征的基础处理方式,包括怎么降维.怎么处理脏数据等等.其实特征工程真正的难点是如何结合业务需求衍生出新的特征.结合业务需求讲的是利用专家经验来提取出数据里对结果影响更大的特征,往往是原 ...

  8. Scikit-learn学习系列 | 4. sklearn特征降维方法汇总(方差过滤,卡方,F过滤,互信息,嵌入法)

    如有错误,恳请指出. 以下内容整理自专栏:博主"文火冰糖的硅基工坊"的专栏--机器学习与scikit-learn,对部分的文章的简化与整理. 文章目录 1. 常见的降维方法简介 1 ...

  9. 时间序列(time serie)分析系列之时间序列特征(feature)7

    文章目录 1.问题描述 2.特征构建 2.1时间特征 2.2平移特征 2.3窗口特征 3.总结 1.问题描述 时间序列数据作为一种典型的数据,常存在于各行各业.比如客流.车流.销量.KPI指标等等. ...

  10. 机器学习系列(5)_特征工程02特征提取

    文章目录 一.Filter过滤法 1.方差过滤 (1)使用KNN进行考察 (2)使用随机森林(RFC)进行考察 2.相关性过滤 (1)卡方过滤 (2) 用随机森林进行比较特征选择 (3)选取超参数 ( ...

最新文章

  1. window和linux和android进程内存CPU等监控软件
  2. MDB!= JMS,反之亦然
  3. 好用到哭!你需要立刻学会的20个Python代码段,你get到了吗?
  4. PHP判断PHP版本是否及格
  5. element ui 点击修改开启停用按钮状态
  6. java反射 反射构造函数 报 wrong number of arguments 错误
  7. biosrecovery什么意思_卡刷和线刷手机什么意思 Recovery使用方法
  8. 防火墙的三种工作模式介绍(路由模式、透明模式(网桥)、混合模式)
  9. windows2003序列号
  10. 服务器80端口找不到,如何查询服务器80端口被关闭
  11. 【嵌入式技术期末复习要点】
  12. Android箭头图标移动动画实现
  13. 计算机查找保存的文件,电脑保存文件到哪里找
  14. 【工具】pip安装不在当前虚拟环境中
  15. 破解TA朋友圈“仅三天可见”
  16. 简单的学生成绩管理系统
  17. Anycodes,在线编程网站上线啦!支持六种编程语言,语法高亮,行数显示,和代码自动折叠。小伙伴们,请速度围观!
  18. b2c电商平台建设不能忽略了这些
  19. ios开发Dlog调试
  20. 博..条码打印机的java开发

热门文章

  1. 山东轻工业学院CSDN高校俱乐部参加“新一代语音云发布暨语音开发者大会”与“2012百度开发者大会”体会心得
  2. 前复权 后复权和不复权是什么意思
  3. kubernetes v1.11 生产环境 二进制部署 全过程
  4. 数据结构韩顺平版(2)
  5. c语言 pow算圆的面积,简单微积分--积分求圆的面积
  6. 什么叫泛域名ssl证书
  7. 当今计算机的排名,目前电脑处理器排行榜(2020处理器性能排名对比)
  8. signature=cc1c224e1386c7abfb9e93371b44eda6,Ultrafast hot-carrier-dominated photocurrent in graphene
  9. HTML之meta属性大全
  10. Eureka注册服务列表显示ip+端口