# Python OpenCv 实现实时人脸识别及面部距离测量

Python OpenCv 实现实时人脸识别及 面部测距

pip install cvzone
pip install mediapipe


pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu


OpenCv实现人脸测距主要利用了相似三角形原理，见下图

（1）其中相机的焦距f是固定不变的；
（2）w为照相机成像后人眼的像素值距离，可以通过findFaceMesh( )将人脸网格识别后再测算成像人眼的像素距离w；
（3）W为现实中人左眼和右眼的距离，男人平均瞳距为64mm，女人的平均瞳距为62mm，本项目开发取中间值63mm;
（4）d为想要获得的实际人到相机的距离，通过相似三角形原理，变换公式后就可以计算出人到相机的距离公式：d=(f*W)/w

import cv2
import cvzone
from cvzone.FaceMeshModule import FaceMeshDetector

cap = cv2.VideoCapture(0)
detector = FaceMeshDetector(maxFaces = 1)

while True:
img,faces = detector.findFaceMesh(img,draw = False)

if faces:

face = faces[0]
pointLeft = face[145]
pointRight = face[374]

w,_ = detector.findDistance(pointLeft,pointRight)
W = 6.3
d = 50
f = (w * d) / W
print(f)

cv2.imshow("Iamge",img)
cv2.waitKey(1)


import cv2
import cvzone
from cvzone.FaceMeshModule import FaceMeshDetector

cap = cv2.VideoCapture(0)
detector = FaceMeshDetector(maxFaces = 1)

while True:
img,faces = detector.findFaceMesh(img,draw = False)

if faces:

face = faces[0]
pointLeft = face[145]
pointRight = face[374]

w, _ = detector.findDistance(pointLeft, pointRight)
W = 6.3

f = 300
d = (W * f) / w
print(d)

cvzone.putTextRect(img,f'Depth:{int(d)}cm',(face[10][0]-95,face[10][1]-5),scale = 1.8)

cv2.imshow("Iamge",img)
cv2.waitKey(1)



[En]

Multi-person ranging code see below, I have not been optimized, multiple people ranging at the same time will float unstable.

import cv2
import cvzone
from cvzone.FaceMeshModule import FaceMeshDetector

cap = cv2.VideoCapture(0)
detector = FaceMeshDetector(maxFaces=3)

while True:
img,faces1 = detector.findFaceMesh(img)
img,faces2 = detector.findFaceMesh(img)
img,faces3 = detector.findFaceMesh(img)
W = 6.3

if faces1:
face1 = faces1[0]
pointLeft1 = face1[145]
pointRight1 = face1[374]

w1, _ = detector.findDistance(pointLeft1, pointRight1)

f = 300
d1 = (W * f) / w1

cvzone.putTextRect(img, f'Depth:{int(d1)}cm', (face1[10][0] - 95, face1[10][1] - 5), scale = 1.8)

if faces2:
face2 = faces2[0]
pointLeft2 = face2[145]
pointRight2 = face2[374]

w2,_ = detector.findDistance(pointLeft2,pointRight2)

f = 300
d2 = (W * f) / w2

cvzone.putTextRect(img, f'Depth:{int(d2)}cm', (face2[10][0] - 95, face2[10][1] - 5), scale=1.8)

if faces3:
face3 = faces3[0]
pointLeft3 = face3[145]
pointRight3 = face3[374]

w3, _ = detector.findDistance(pointLeft3, pointRight3)

f = 300
d3 = (W * f) / w2

cvzone.putTextRect(img, f'Depth:{int(d3)}cm', (face3[10][0] - 95, face3[10][1] - 5), scale=1.8)

cv2.imshow("img",img)
cv2.waitKey(1)


Original: https://blog.csdn.net/qq_40280673/article/details/122828350
Author: 佐咖
Title: Python OpenCv 实现实时人脸识别及面部距离测量

(0)

### 大家都在看

• #### 灰色预测GM(1,1)模型

目录 简介 数学模型 分析步骤 对数据进行准指数规律检验 对预测效果进行评价 GM(1,1)模型拓展 MATLAB源码 简介 在这里，灰色的意思是系统的信息只有一部分，不完整，与之…

人工智能 2023年6月25日
0165
• #### 语音处理/语音识别基础（六）- 语音的端点检测（EPD/VAD)

端点检测（End-point Detection，简称 EPD）的目标，是要找到音频信号（音讯）的开始和结束的位置，所以又可以称为 Speech Detection 或是 VAD …

人工智能 2023年7月26日
0424
• #### 数据特征处理pca降维-小结

1.降维的主要目的是为了减少训练样本的时间，只保留重要的特征，去掉一些无关紧要的特征，至于是去掉哪些特征，保留哪些特征，这个就是pca要做的事情了，类似以下的例子：日期 湿度 温度…

人工智能 2023年6月17日
0153
• #### imblearn库中ADASYN()使用报错:No samples will be generated with the provided ratio settings.

报错点：No samples will be generated with the provided ratio settings. 问题源：采用重采样方法 ADASYN解决类别不…

人工智能 2023年6月18日
0127
• #### 【老生谈算法】matlab实现图像压缩算法源码——图像压缩

; matlab图像压缩算法详解 1、文档下载： 本算法已经整理成文档如下，有需要的朋友可以点击进行下载 序号 文档（点击下载） 本项目文档【老生谈算法】图像压缩试验matlab….

人工智能 2023年6月20日
0166
• #### 语音助手的环境自适应：迁移学习算法、域内数据自适应

语音助手已经成为生活中不可或缺的助手。但有时，在室内使用方便的语音助手来让自己更多地在户外活动，可能会变成一种“愚蠢的行为”。就像我们人类一样，小萌心语音助手在来到一个新的环境时也…

人工智能 2023年5月27日
0163
• #### 旋转框目标检测mmrotate v0.3.1 训练DOTA数据集（二）

1、数据集构建 MMRoteate 支持的数据集 ; 类别 The object categories in DOTA-v1.0: plane, ship, storage tan…

人工智能 2023年7月28日
0129
• #### 【NLP】语义分析

语义计算的任务：解释自然语言句子或篇章各部分(词、词组、句子、段落、篇章)的含义。面临的困难： 自然语言句子中存在大量的歧义，涉及指代、同义、多义、量词的辖域、隐喻等 同一句子对于…

人工智能 2023年5月31日
0191
• #### c#关于类，对象的例子实现

BankAccount 类表示银行帐户。对账户进行分类 2.1 Transaction类 此类用来记录每笔流水 namespace Classes; public class Tr…

人工智能 2023年6月28日
0146
• #### opencv-python基于霍夫变换的图像矫正和表格补齐

文章目录 背景</a></li> <li><a href="#-12">思路</a></li&…

人工智能 2023年6月18日
0227
• #### 【深度学习】聊一聊什么是卷积神经网络，卷积是什么意思？

​​ 目录 卷积 * 举个例子 – 那么此时问：下午2点这个人体内还有什么食物？ 解决方法 总结 神经网络中的卷积 * 像素、灰度值 卷积操作 思考 卷积核作用 &#8…

人工智能 2023年6月16日
0182
• #### R语言ggplot2可视化分面图（facet_grid）、自定义设置分面图标签栏的背景色（默认背景色为灰色）

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。 Original: https:…

人工智能 2023年7月16日
0200
• #### Python操作MySQL数据库—pymysql库（可直接使用的模板通用操作）

Python与MySQL数据库交互 1.DB-API：(DB是data；API是方法，接口) Python与数据库的交互： 在没有DB-API之前，各数据库之间的应用接口非常混乱，…

人工智能 2023年7月4日
0166
• #### YOLOV5目标检测记录

文章目录 1、运行官网YOLOV5代码 * 1、下载源代码 2、文件夹解析 3、开始测试 – 1、图片测试 2、视频测试 3、摄像头实时测试 2、训练自己的神经网络模型…

人工智能 2023年7月12日
0173
• #### arm64下安装pytorch,torchvision,torchaudio以及它们之间的版本对应关系

文章目录 1. 安装pytorch for arm64 2. 安装torchvison for arm64 3. pytorch和torchvison的对应关系(即时更新) 4. …

人工智能 2023年7月22日
0412
• #### 什么是过拟合问题，深度学习中如何解决过拟合问题

问题描述 过拟合问题是指在机器学习模型中，训练集上的表现非常好，但在新的数据上表现很差的现象。在深度学习中，由于模型参数数量庞大，网络结构复杂，更容易出现过拟合问题。本文将介绍过拟…

人工智能 2024年1月1日
0172