用普通摄像头测量距离

安装python包

pip install cvzone
pip install mediapipe

# main
# 2022/2/15

import cv2
import cvzone
from cvzone.FaceMeshModule import FaceMeshDetector

# 检测人脸
detector = FaceMeshDetector(maxFaces=1)
cap = cv2.VideoCapture(0)

while True:
    success, img = cap.read()
    img, faces = detector.findFaceMesh(img)
    if faces:
        face = faces[0]
        pointLeft = face[145]  # 左眼中心点坐标
        pointRight = face[375]  # 右眼中心点坐标
        # 绘制人眼中心点并连线
        cv2.line(img, pointLeft, pointRight, (0, 200, 0), 3)
        cv2.circle(img, pointLeft, 5, (255, 0, 255), cv2.FILLED)
        cv2.circle(img, pointRight, 5, (255, 0, 255), cv2.FILLED)
        w, _ = detector.findDistance(pointLeft, pointRight)  # 保持人脸到摄像头50cm下测量
        W = 6.3  # 真实人脸间距 6.3cm
        # Finding the Focal Length
        # d= 50 # 保持人脸到摄像头50cm的距离
        # f=(w*d)/W
        # print(f)

        # Finding distance
        f = 840  # 根据相机标定的结果
        d = (W * f) / w
        print(d)
        cvzone.putTextRect(img, f'Depth:{int(d)}cm', (face[10][0] - 100, face[10][1] - 50), scale=2)

    cv2.imshow("Image", img)
    cv2.waitKey(5)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值