import cv2 # 摄像头捕获 cap = cv2.VideoCapture(0,cv2.CAP_DSHOW) # 设置摄像头分辨率 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) while True: # 读取摄像头画面 ret, frame = cap.read() # 显示摄像头画面 cv2.imshow('frame', frame) # 等待用户按下空格键 if cv2.waitKey(1) & 0xFF == ord(' '): # 保存当前画面到文件 cv2.imwrite('height.jpg', frame) # 对图像进行处理,提取人的轮廓 img = cv2.imread('height.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 计算人的身高 pixel_height = cv2.arcLength(contours[0], True) height = pixel_height / 100 # 显示身高 print('Height:', height, 'm') # 退出程序 break # 释放摄像头资源 cap.release() # 关闭窗口 cv2.destroyAllWindows() cv2.waitKey(0)
时间: 2024-04-24 07:22:27 浏览: 15
这段代码是一个使用OpenCV库进行摄像头捕获和身高测量的程序。程序打开摄像头并设置分辨率,然后循环读取摄像头画面并显示出来。当用户按下空格键时,程序将当前画面保存到文件,并对图像进行处理,提取人的轮廓。接着,程序计算人的身高,并输出结果到控制台。程序最后释放摄像头资源并关闭窗口。
需要注意的是,这段代码中计算身高的方法是通过测量人的轮廓的周长来计算的。由于这种方法的实现依赖于摄像头和人的相对距离,因此存在一定的误差。此外,程序中只处理了第一个轮廓,如果有多个人出现在画面中,需要进行相应的修改。