使用Python OpenCV计算两个人之间的距离可以通过以下步骤实现:
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('path/to/haarcascade_frontalface_default.xml')
facial_landmark_predictor = dlib.shape_predictor('path/to/shape_predictor_68_face_landmarks.dat')
def calculate_distance(image_path):
# 读取图像
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 检测人脸关键点
for (x, y, w, h) in faces:
rect = dlib.rectangle(int(x), int(y), int(x + w), int(y + h))
shape = facial_landmark_predictor(gray, rect)
landmarks = shape_to_np(shape)
# 计算两个人之间的距离
distance = np.linalg.norm(landmarks[0] - landmarks[1])
# 绘制人脸框和关键点
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
for (x, y) in landmarks:
cv2.circle(image, (x, y), 2, (0, 0, 255), -1)
# 在图像上显示距离
cv2.putText(image, f'Distance: {distance}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
calculate_distance('path/to/image.jpg')
这样就可以使用Python OpenCV计算两个人之间的距离了。请注意,这里使用了人脸检测器和人脸关键点检测器来检测人脸和关键点,你需要提前下载对应的模型文件,并将其路径传递给相应的变量。
领取专属 10元无门槛券
手把手带您无忧上云