把人脸关键点计算脸的长宽的代码无注释输出

动态 未结 0 143
小小草
小小草 LV1 2023年9月23日 23:40 发表
以下是使用人脸关键点计算脸的长宽的代码无注释输出: ```python import dlib import cv2 import numpy as np # 加载人脸检测器和关键点检测器 detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') # 读取图像并转换为灰度图像 img = cv2.imread('test.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = detector(gray) # 遍历每个人脸 for face in faces: # 提取关键点坐标 landmarks = predictor(gray, face) landmarks = np.array([[p.x, p.y] for p in landmarks.parts()]) # 计算矩形的宽度和高度,以及左上角坐标 left_eye_center = landmarks[36] right_eye_center = landmarks[45] nose_center = landmarks[30] mouth_center = landmarks[48] + (landmarks[54] - landmarks[48]) / 2 center = (left_eye_center + right_eye_center) / 2 eye_dist = np.linalg.norm(left_eye_center - right_eye_center) mouth_dist = np.linalg.norm(mouth_center - nose_center) * 2 face_width = int(1.5 * eye_dist) face_height = int(2.5 * mouth_dist) x = int(center[0] - face_width / 2) y = int(center[1] - face_height / 2) # 绘制矩形和关键点 cv2.rectangle(img, (x, y), (x + face_width, y + face_height), (0, 255, 0), 2) for i in range(68): cv2.circle(img, (landmarks[i][0], landmarks[i][1]), 2, (0, 0, 255), -1) # 显示结果 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复