Python 姿态识别:使用列表推导式提取关键点坐标
本文介绍如何使用 Python 列表推导式从姿势识别结果中提取特定关键点的坐标。该方法简洁高效,可以简化代码并提高可读性。
原始代码:
pose_data = []
for landmark in results.pose_landmarks.landmark:
if landmark.visibility < 0.5: # 如果关键点可见度小于0.5,则跳过
continue
if landmark.name not in ['NOSE', 'LEFT_SHOULDER', 'RIGHT_SHOULDER', 'LEFT_ELBOW', 'RIGHT_ELBOW', 'LEFT_WRIST', 'RIGHT_WRIST', 'LEFT_HIP', 'RIGHT_HIP', 'LEFT_KNEE', 'RIGHT_KNEE', 'LEFT_ANKLE', 'RIGHT_ANKLE']: # 如果关键点不是需要的关键点,则跳过
continue
pose_data.append(landmark.x)
pose_data.append(landmark.y)
pose_data.append(landmark.z if landmark.z is not None else 0)
使用列表推导式简化代码:
pose_data = [landmark.x for landmark in results.pose_landmarks.landmark if landmark.visibility >= 0.5 and landmark.name in ['NOSE', 'LEFT_SHOULDER', 'RIGHT_SHOULDER', 'LEFT_ELBOW', 'RIGHT_ELBOW', 'LEFT_WRIST', 'RIGHT_WRIST', 'LEFT_HIP', 'RIGHT_HIP', 'LEFT_KNEE', 'RIGHT_KNEE', 'LEFT_ANKLE', 'RIGHT_ANKLE']]
pose_data += [landmark.y for landmark in results.pose_landmarks.landmark if landmark.visibility >= 0.5 and landmark.name in ['NOSE', 'LEFT_SHOULDER', 'RIGHT_SHOULDER', 'LEFT_ELBOW', 'RIGHT_ELBOW', 'LEFT_WRIST', 'RIGHT_WRIST', 'LEFT_HIP', 'RIGHT_HIP', 'LEFT_KNEE', 'RIGHT_KNEE', 'LEFT_ANKLE', 'RIGHT_ANKLE']]
pose_data += [landmark.z if landmark.visibility >= 0.5 and landmark.name in ['NOSE', 'LEFT_SHOULDER', 'RIGHT_SHOULDER', 'LEFT_ELBOW', 'RIGHT_ELBOW', 'LEFT_WRIST', 'RIGHT_WRIST', 'LEFT_HIP', 'RIGHT_HIP', 'LEFT_KNEE', 'RIGHT_KNEE', 'LEFT_ANKLE', 'RIGHT_ANKLE'] and landmark.z is not None else 0 for landmark in results.pose_landmarks.landmark]
使用列表推导式可以更简洁地提取特定关键点的坐标,同时提高代码的可读性。
原文地址: https://www.cveoy.top/t/topic/gNlu 著作权归作者所有。请勿转载和采集!