python实现基于OpenCV的人脸识别(用于检测人脸是否正对屏幕,距离是否合适)

<facelocation.py>为根据开源代码改写的人脸角度识别代码
返回的结果包含人脸距离和人脸角度,具体阈值可根据需求自行修改
<facelocation.py>
import face_recognition as fr
import cv2 
import numpy as np
import dlib
import time
import math
//代码中的部分内容根据开源网络代码进行修改
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
POINTS_NUM_LANDMARK = 68

def _largest_face(dets):
    if len(dets) == 1:
        return 0

    face_areas = [(det.right() - det.left()) * (det.bottom() - det.top()) for det in dets]

    largest_area = face_areas[0]
    largest_index = 0
    for index in range(1, len(dets)):
        if face_areas[index] > largest_area:
            largest_index = index
            largest_area = face_areas[index]

    print("largest_face index is {} in {} faces".format(largest_index, len(dets)))

    return largest_index

def get_image_points_from_landmark_shape(landmark_shape):
    if landmark_shape.num_parts != POINTS_NUM_LANDMARK:
        print("ERROR:landmark_shape.num_parts-{}".format(landmark_shape.num_parts))
        return -1, None
    image_points = np.array([
        (landmark_shape.part(30).x, landmark_shape.part(30).y),  
        (landmark_shape.part(8).x, landmark_shape.part(8).y), 
        (landmark_shape.part(36).x, landmark_shape.part(36).y),  
        (landmark_shape.part(45).x, landmark_shape.part(45).y),  
        (landmark_shape.
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值