Python计算各距离

###刘声龙--202001170115--湖南信息学院
from scipy.spatial import distance
import numpy as np
import math
x1 = np.array([3,4,2])
x2 = np.array([5,6,1])
x3 = np.array([2,2,4])
x4 = np.array([6,4,5])
a=[x1,x2,x3,x4]
####欧氏距离
for i in range(3):
    for j in range(i+1,4):
        a1 = np.sqrt(np.square(a[i]-a[j]))
        b=a1.tolist()
        #print(b)
        print('x{}和x{}欧氏距离测试结果是:'.format(i+1,j+1),end='')
        print(round((int(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]))**(1/2),2))
        #print('欧氏距离测试结果是:' + str(dist1))(int(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]))**(1/2)
print()
#####曼哈顿距离
for i in range(3):
    for j in range(i+1,4):
        m1 = np.sum(np.abs(a[i]-a[j]))
        #print('曼哈顿距离测试结果是:' + str(m1))
        print('x{}和x{}曼哈

Python中,可以通过使用计算机视觉库(如OpenCV)来计算人体距离。以下是一个简单的示例,展示如何使用OpenCV和相机的标定参数来计算人体距离。 首先,确保你已经安装了OpenCV库。如果没有安装,可以使用以下命令进行安装: ```bash pip install opencv-python ``` 接下来,编写Python代码来计算人体距离: ```python import cv2 import numpy as np # 相机内参矩阵(需要根据实际情况进行标定) camera_matrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]], dtype=np.float32) # 相机畸变系数(需要根据实际情况进行标定) dist_coeffs = np.array([k1, k2, p1, p2, k3], dtype=np.float32) # 定义实际物体的高度(单位:米) KNOWN_HEIGHT = 1.75 # 假设人体高度为1.75米 # 初始化视频捕捉对象 cap = cv2.VideoCapture(0) # 加载预训练的HOG人体检测器 hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) while True: ret, frame = cap.read() if not ret: break # 转换为灰度图像 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 检测人体 boxes, weights = hog.detectMultiScale(gray, winStride=(8, 8)) for (x, y, w, h) in boxes: # 绘制人体检测框 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) # 计算人体中心的像素坐标 center_x = x + w // 2 center_y = y + h // 2 # 计算人体高度的实际距离 distance = (KNOWN_HEIGHT * camera_matrix[1, 1]) / h # 在图像上显示距离 cv2.putText(frame, f'Distance: {distance:.2f} m', (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # 显示结果图像 cv2.imshow('Frame', frame) # 按下 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 cap.release() cv2.destroyAllWindows() ``` 在这个示例中,我们使用了OpenCV的HOG人体检测器来检测视频流中的人体,并使用相机的内参矩阵和畸变系数来计算人体的实际距离。请注意,相机的内参矩阵和畸变系数需要根据实际情况进行标定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值