打造属于自己的人体识别系统:基于openpose,开源且免费

发布时间 2023-08-17 11:16:35作者: Mostary

安装CMake:

访问CMake的官方网站(https://cmake.org/download/),下载最新的Windows安装程序。

运行下载的安装程序,并按照安装向导的说明进行安装。

安装CUDA(可选):

CUDA是用于GPU加速的平行计算平台,对于OpenPose的一些功能来说是可选的,但推荐安装。

访问NVIDIA官方网站(https://developer.nvidia.com/cuda-toolkit-archive),下载适合你操作系统和CUDA支持的版本。

运行下载的CUDA安装程序,并按照安装向导的说明进行安装。

安装OpenCV:

OpenPose依赖于OpenCV进行图像和视频处理。

在Windows系统上,可以使用pip进行OpenCV的安装。

打开命令提示符(Command Prompt)并运行以下命令:

Copy codepip install opencv-python

安装OpenPose:

克隆OpenPose存储库:打开Git Bash或其他终端,并导航到你选择的目录。运行以下命令克隆OpenPose存储库:

bashCopy codegit clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

配置和生成:打开CMake GUI(如果已经安装了CMake)并设置以下路径:

"Where is the source code"(源代码路径):指向刚刚克隆的OpenPose存储库路径。

"Where to build the binaries"(生成路径):指定一个新的目录,用于生成OpenPose的输出文件。

然后点击 "Configure"(配置)按钮,并选择你的编译器。在弹出的对话框中选择 "Generate"(生成)按钮。

编译OpenPose:

打开生成的生成项目文件(例如,Visual Studio的.sln文件)。

在Visual Studio中,选择正确的构建配置(Debug或Release)和平台(x86或x64)。

点击生成按钮,编译OpenPose。

安装OpenPose:

编译完成后,在生成目录中会生成OpenPose的可执行文件。

将生成目录中的

bin、

models 和

lib 文件夹复制到你的项目中。

完成上述步骤后,你应该已经安装了CMake、CUDA(可选)和OpenCV,并成功编译和安装了OpenPose库。在你的Python项目中导入OpenPose并开始使用它的功能。请确保按照OpenPose官方文档提供的详细安装指南进行操作,以获取更准确的信息。

要显示人物的骨骼位置,你可以使用姿势估计算法来检测人体关键点,并在图像上绘制出骨骼连接线。OpenCV提供了一个称为"OpenPose"的流行姿势估计库,它可以用于检测人体关键点并估计姿势。

要在你的程序中集成OpenPose,需要进行以下步骤:

安装OpenPose库:请参考OpenPose官方文档(

https://github.com/CMU-Perceptual-Computing-Lab/openpose)以获取安装说明。根据你的系统和需求,按照指导安装OpenPose库。

导入OpenPose库:在你的代码中导入OpenPose库,以便可以使用其中的功能。导入OpenPose的示例代码如下:

pythonCopy codefrom openpose import pyopenpose as op

配置OpenPose参数:创建一个OpenPose实例,并配置相关参数。你可以根据需要调整参数。下面是一个简单的示例:

pythonCopy codeparams = dict()

params["model_folder"] = "path/to/openpose/models" # OpenPose模型文件夹的路径

params["net_resolution"] = "-1x368" # 图像尺寸

params["number_people_max"] = 1 # 最大检测人数

opWrapper = op.WrapperPython()

opWrapper.configure(params)

opWrapper.start()

进行姿势估计:在你的人体检测循环中,使用OpenPose进行姿势估计,并获取人体关键点。下面是一个简单的示例:

pythonCopy codedatum = op.Datum()

datum.cvInputData = frame # 当前帧图像

opWrapper.emplaceAndPop([datum])

keypoints = datum.poseKeypoints # 人体关键点

绘制骨骼连接线:使用人体关键点数据,在图像上绘制出人体的骨骼连接线。你可以使用OpenCV的绘图函数来实现。下面是一个示例:

pythonCopy codefor person in keypoints:

for i, joint in enumerate(person):

if joint[2] > 0.2: # 过滤掉置信度较低的关键点

cv2.circle(frame, (int(joint[0]), int(joint[1])), 3, (0, 255, 0), -1)

for pair in opPose.POSE_COCO_BODY_PARTS:

if person[pair[0]][2] > 0.2 and person[pair[1]][2] > 0.2:

cv2.line(frame, (int(person[pair[0]][0]), int(person[pair[0]][1])),

(int(person[pair[1]][0]), int(person[pair[1]][1])), (0, 255, 0), 2)

请注意,以上代码只是一个简单示例,你可能需要根据你的需求进行适当的修改和优化。

使用OpenPose进行姿势估