opencv摄像头测量人物身高完整代码
时间: 2023-07-07 12:39:44 浏览: 312
好的,下面是完整的OpenCV摄像头测量人物身高的代码:
```python
import cv2
# 加载Haar级联分类器
body_cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')
# 实际身高(单位:厘米)
body_height = 170
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取帧
ret, frame = cap.read()
# 转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人体
bodies = body_cascade.detectMultiScale(gray, 1.3, 5)
# 计算身高并绘制矩形框和文字
for (x,y,w,h) in bodies:
pixel_height = h # 人体像素高度
scale = body_height / pixel_height # 比例关系
height = round(scale * pixel_height, 2) # 计算身高
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
cv2.putText(frame, "Height: {}cm".format(height), (x,y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# 显示帧
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在代码中,使用了一个while循环来实时读取摄像头的帧,并对每一帧进行人体检测和身高计算,然后在图像上绘制矩形框和身高文字,并实时显示在屏幕上。按下'q'键即可退出程序。
需要注意的是,由于人体检测算法的限制,这种方法可能会存在误差。同时,摄像头的位置和角度也会影响测量结果。因此,建议在使用时要注意环境因素和测量方法,以提高测量的准确性。
阅读全文