import cv2 import numpy as np from rtmlib import Body, draw_skeleton def detect_body_keypoints_image(image_path, output_path=None): # 初始化模型 device = 'cuda' if cv2.cuda.getCudaEnabledDeviceCount() > 0 else 'cpu' backend = 'onnxruntime' openpose_skeleton = True # True为OpenPose风格,False为MMPose风格 # 创建Body实例,使用平衡模式 body = Body( mode='balanced', to_openpose=openpose_skeleton, backend=backend, device=device ) # 读取图片 image = cv2.imread(image_path) if image is None: print(f"无法读取图片: {image_path}") return # 检测身体关键点 keypoints, scores = body(image) print(keypoints) # 绘制关键点 result_image = draw_skeleton( image.copy(), keypoints, scores, openpose_skeleton=openpose_skeleton, kpt_thr=0.43 ) # 保存或显示结果 if output_path: cv2.imwrite(output_path, result_image) print(f"已保存结果到: {output_path}") # 显示结果 # cv2.imshow('Body Keypoints Detection', result_image) # cv2.waitKey(0) # cv2.destroyAllWindows() if __name__ == "__main__": # 替换为您的图片路径 image_path = "example.png" output_path = "body_result.jpg" detect_body_keypoints_image(image_path, output_path)