openpose环境搭建

发布时间:2024年01月16日

编程如画,我是panda!

最近学习要用要openpose,配了三天的环境,快疯了,踩了很多坑,在这里和大家分享一下

?

目录

前言

一、安装openpose

二、运行openpose

三、常见的两个错误

1.?No module named 'pyopenpose'

2.?DLL load failed while importing pyopenpose: 找不到指定的模块


前言

OpenPose 是一款开源的人体姿势估计库,能够在图像或视频中检测和估计人体的关键点位置,包括头部、身体、四肢等部位。OpenPose使用深度学习技术,特别是卷积神经网络(CNN),来实现高效且准确的人体姿势估计。该库的目标是为计算机视觉、机器学习和人机交互等领域提供一个通用、易用的工具,使开发者能够轻松地获取有关人体动作和姿势的信息。由于其强大的功能和开放源代码的特性,OpenPose在许多领域,如人体行为分析、虚拟现实、健康监测等方面得到广泛应用。

一、安装openpose

安装openpose的话可以参考官方给出的文档:(对英语基础不好的小伙伴可能看着有点头疼)openpose/doc/installation/0_index.md at master · CMU-Perceptual-Computing-Lab/openpose · GitHub

也可以看一下这个up主的视频:windows编译openpose及在python中调用_哔哩哔哩_bilibili?

我的话在网上搜了很多教程,但是一直编译不好,一个接一个的错误,太难受了,我建议如果想省事的话,直接用我给出的链接吧:

链接:https://pan.baidu.com/s/1O27lKereBU4VsDEeh_DpYQ?
提取码:duk8?

里面有两个版本,一个是pyhton3.7的一个是python3.8的,python3.8的里面没有CPU版本的,只有GPU版本的。

python3.7版本来自:openpose环境搭建(详细教程CPU/GPU)windows 10+python 3.7+CUDA 11.6+VS2022_openpose安装

python3.8版本来自:windows编译openpose及在python中调用 - 迷途小书童的Note迷途小书童的Note (xugaoxiang.com)

两个博主讲的都很好,跟着他们一步一步做没有什么问题,如果出现了编译的问题,检查一下是不是需要下载的资源没有下;
如果是出现Error: OpenPose library could not be found. Did you enable `BUILD_PYTHON` in CMake and have this Python script in the right folder?
No module named 'pyopenpose'或者DLL load failed while importing pyopenpose: 找不到指定的模块,这两个问题,请看我下面的讲解。

如果使用GPU版本的openpose,一定要确认好自己有英伟达的显卡,并且下载好了CUDA和cuDNN,如果没有安装好的可以参考我之前发的博客:
不同版本CUDA和cudnn下载安装并配置环境变量

二、运行openpose

这里以python3.7GPU为例:
首先创建自己的工程文件夹?:

然后将build文件夹里面的model文件夹复制过去,然后创建bin文件夹:

将 openpose_py3.7\buildGPU\python\openpose\Release路径下的文件:

复制到你自己工程项目文件的bin目录和根目录下,然后打开openpose_py3.7\buildGPU\x64\Release,将这个文件同样复制到你的项目bin目录下:

最后打开这个目录openpose_py3.7\buildGPU\bin,将里面的文件全部复制到你的项目bin目录里,最后你的项目文件夹应该是这样的:

用你的IDE打开这个项目文件,我这里选用VSCode:

python环境一定要是python3.7的不然会报错,然后提前下载好opencv:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

?在bin目录下创建pyhton文件test.py:

在test.py中输入以下代码:

import os
import sys
import cv2
from sys import platform
import argparse

dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path)
os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/bin;'
import pyopenpose as op

print(op)
print("成功引入pyopenpose")

parser = argparse.ArgumentParser()
# 修改成你自己测试图片的路径
parser.add_argument("--image_path", default="w.jpg",help="Process an image. Read all standard formats (jpg, png, bmp, etc.).")
args = parser.parse_known_args()

# Custom Params (refer to include/openpose/flags.hpp for more parameters)
params = dict()

params["model_folder"] = "models/"

# Add others in path?
for i in range(0, len(args[1])):
    curr_item = args[1][i]
    if i != len(args[1])-1: next_item = args[1][i+1]
    else: next_item = "1"
    if "--" in curr_item and "--" in next_item:
        key = curr_item.replace('-','')
        if key not in params:  params[key] = "1"
    elif "--" in curr_item and "--" not in next_item:
        key = curr_item.replace('-','')
        if key not in params: params[key] = next_item


params["net_resolution"] = "368x256" 

# Starting OpenPose
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()

# Process Image
datum = op.Datum()
imageToProcess = cv2.imread(args[0].image_path)
datum.cvInputData = imageToProcess
opWrapper.emplaceAndPop(op.VectorDatum([datum]))

# Display Image
print("Body keypoints: \n" + str(datum.poseKeypoints))
cv2.imshow("OpenPose 1.7.0 - Tutorial Python API", datum.cvOutputData)
cv2.waitKey(0)

然后点击运行,得到结果:

三、常见的两个错误

1.?No module named 'pyopenpose'

出现这个错误的可能有很多种,我说一下最常见的两种,一种是你的python解释器并不是对应版本,另一种是这个文件你只放了一个地方,项目文件的bin目录和根目录都要有这个文件。

2.?DLL load failed while importing pyopenpose: 找不到指定的模块

出现这个问题的原因是程序找不到你的DLL文件,一定要把python文件放在bin目录下才能运行,或者使用官方示例给出的添加路径的办法,但是添加了我有时候也运行不起来,所以我建议还是直接放在bin目录里面吧,省事。?

文章来源:https://blog.csdn.net/m0_62627216/article/details/135617327
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。