win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)

(一)前言

由于大创项目的需求,需要用到一个叫OpenPose的开源项目,在该项目中采用的是python来开发,但是由于自己的轻薄本(win10)是集显(没有英伟达的gpu)/(ㄒoㄒ)/~~,而且网上有关openpose only cpu的资料实在有点稀缺,最后东拼西凑查遍了好多东西(甚至去Google里搜索),终于在Medium和B站找到相关资料并通过两者的结合成功安装了pyopenpose。以下介绍具体的安装步骤。

(二)准备工作

  • git安装(由于网上的教程较多,这里就不详细介绍)
  • cmake安装(这里本人采用的是3.22版本,其他版本应该也可以,同样不详细介绍安装方式)
  • vs2019(功能下载里需要选择"使用C++的桌面开发")
    C++的桌面开发,需选中并下载
  • dev-sidecar(开发者边车工具,考虑到有些人可能无法登录github下载openpose项目源代码,这里推荐gitee上的一个工具,使用该工具可以加速进入github,亲测有用)
    dev-sidecar工具链接
  • 迅雷(可选)

(三)友情提醒

详细的安装步骤有些长,需要耐心一步步往下操作,注意不要看漏看错

此外文章中出现的目录路径都是我自己电脑里的路径,旨在帮助读者对照,避免出现找错文件夹的错误。当然了你也可以采用和我一样的路径

如果你在安装的过程中搞混了文件夹,可以注意观察本文章中的各个路径,以此理清自己的思路

(四)详细安装步骤

1.新建文件夹

选择合适位置新建一个文件夹,这里我直接命名为openpose_estimation,这个文件在我的目录位置是:
D:\openpose_estimation

2.下载OpenPose源代码

打开OpenPose的GitHub官网(或直接在GitHub上搜索openpose,star最多的那个就是了):
https://github.com/CMU-Perceptual-Computing-Lab/openpose
openpose仓库链接
接下来回到我们刚刚创建的openpose_estimation文件夹下,在该文件夹下打开cmd命令行,输入以下指令:

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

稍微等待一段时间,当然了你也可以选中"Download ZIP":
download zip
之后解压到指定的目录即可
再或者下载我这里提供的百度网盘???

链接:https://pan.baidu.com/s/1ZNZ8CSG9tehz-jJ6utnJmQ
提取码:rjhd
(这一份是我自己从GitHub上下载的ZIP版本,不知道有一天会不会失效?以后想要下载最新版本的还是得去官网下载)

解压完或者clone完打开下载好的openpose文件夹之后就是这样滴:
(D:\openpose_estimation\openpose)
文件目录

3.配置文件(1)

接下来进入到"3rdparty"
(D:\openpose_estimation\openpose\3rdparty\windows)
下的"windows"文件夹:
文件目录
可以看到这里有几个Windows批处理文件
点击它们就会下载我们需要的一些文件
这里我们需要运行的批处理文件分别是
①getCaffe.bat
②getCaffe3rdparty.bat
③getFreeglut.bat
④getOpenCV.bat

也就是除了最后一个不用运行,其它几个都要
其中一个下载过程
下载过程可能比较漫长,如果嫌弃比较慢的话,这里提供另外一种方式:
在下载界面可以看到要下载的压缩包所在的网址:
另一种方式
所以我们可以将这个网址拷贝下来,然后扔到迅雷中去下载,这样就可以快很多了(此法可行 ,但是本人没有这样做… )
如果是直接用bat批处理文件下载的压缩包会自动解压,如果是用迅雷的话要手动解压下,最后的完成的目录如下:(请对照好自己的文件夹是否正确)
解压后的文件夹

4.配置文件(2)

回到GitHub的openpose主页,进入到3rdparty
需下载的文件夹
这里的"caffe"和"pybind11"两个文件夹我们也需要下载下来,并对应放到我们的"3rdparty"文件夹下的"caffe"和"pybind11"中:
(D:\openpose_estimation\openpose\3rdparty\caffe
D:\openpose_estimation\openpose\3rdparty\pybind11)

在这里插入图片描述

复制https地址:
caffe

同样的,接下来打开命令行cmd,cd到3rdparty下的caffe中并输入如下命令:

git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe.git

在这里插入图片描述

同样你可以采用下载解压ZIP的方法,最后解压到指定文件夹即可。
另外的pybind11文件夹也是一样的做法

这里同样给出我的百度网盘链接,方便某些不方便的同学,但是如果要使用最新的版本的话还是推荐到GitHub中下载

链接:https://pan.baidu.com/s/1cC2dayW2N8Yzem_GuM8Kxg
提取码:7s9u

最后就是这样的:
clone好的caffe文件夹
clone好的pybind11文件夹

5.models下载

回到openpose文件夹中:
(D:\openpose_estimation\openpose)
打开该文件夹下的"models":
(D:\openpose_estimation\openpose\models)
该文件夹如下所示:
models

这里的models同样需要进行下载,
(1)可以直接运行图示中的windows批处理文件"getModels.bat",这样会直接进行下载并自动解压到对应的文件夹中去。

(2)如果你觉得这样的下载方式还是比较慢的话,让我们用记事本打开getModels.sh文件
在这里可以看到:
在这里插入图片描述
要下载的models所在网址,还有文件名称,你要做的就是将上图中两个红色框框起来字符串拼接起来然后扔进迅雷下载,(注意该文件下面还有其他几个models要下载)

6.CMake

在完成了上述那些配置之后,接下来就要用到CMake了。
首先让我们在openpose目录下新建一个build文件夹:
D:\openpose_estimation\openpose\build
cmake
点击左下角的“Configure”:弹出如下窗口:
cmakebuild
需要注意的是,这里的"Specify the generator for this project"需选中"Visual Studio 2019"
“Optional platform for generator"要选中"x64” ,虽然有提示说"if empty, generator uses:x64"但是为了防止有些人默认是win32,所以最好是自己手动选一下,这一点千万不要搞错
之后点击"Finish"
勾选“BUILD_PYTHON”
在这里插入图片描述
“GPU_MODE”选中“CPU_ONLY”
在这里插入图片描述
然后再次点击左下角的“Configure”,这期间可能要花点时间,等全部完成之后,点击左下角的“Generate”
generatedone
点击”Open Project“即可在VS2019中打开build好的C++工程。
如果这一步打不开工程的话,那就进入到build文件夹中:
在这里插入图片描述
在这里也可以打开工程

7.在VS2019中生成pyopenpose

可以看到该项目工程目录如下:
项目工程目录

首先需要选中"Release":
Release
接下来,右键"OpenPoseDemo",点击"生成"
生成1
然后右键"pyopenpose",点击"生成"
生成2
接下来等待生成完毕即可,如果跟着做到这一步没有任何问题的话,那基本就无误了,生成完成后,可以在build文件夹中看到如下
生成完毕
接下来进入该文件夹下的openpose/Release
(D:\openpose_estimation\openpose\build\python\openpose\Release)
可以看到这里就是我们的pyopenpose库了
pyopenpose

(五) 在PyCharm中使用OpenPose

首先可以在build文件夹中看到examples文件夹:
examples
打开该文件夹下的"tutorial_api_python"
(D:\openpose_estimation\openpose\build\examples\tutorial_api_python)
可以看到这里有很多示例文件:
在这里插入图片描述
你可以打开其中一个,比如"01_body_from_image.py"。(你可以尝试运行该文件如果运行出现错误,我在下面的"避坑"章节有说明)。这里让我们先来参考该示例代码并说明下怎么在PyCharm中运行OpenPose

1.首先新建一个工程"opStudy"。

可以看到我这里还有几个文件夹:“bin”,“models”,“Release”,“x64”。这几个文件夹先不要新建。
opStudy

2. 新建"imgs"

"imgs"用来存放img图片
而begin.py是我们的程序主入口python文件

3.复制build

接着回到我们的build文件夹:
D:\openpose_estimation\openpose\build
拷贝
拷贝build文件夹下的bin文件夹,并将之复制到我们的opStudy中,
拷贝build文件夹下的x64文件夹,并将之复制到我们的opStudy中,

进入build/python/openpose中
(D:\openpose_estimation\openpose\build\python\openpose)
复制Release
复制Release并放入到我们的opStudy工程中

4.拷贝models

最后是回到我们的openpose文件夹下:
D:\openpose_estimation\openpose
在这里插入图片描述
拷贝"models"文件夹,同样复制到我们的opStudy工程中。

至此你可以看到你的工程目录应该和我现在的一样:
(以后要新建其他工程,就可以将这一份当作模板直接拷贝)
在这里插入图片描述
接下来,仿照"01_body_from_image.py"来导入pyopenpose::

# 导入库
import argparse
import sys
import cv2
import os
from sys import platform

# import pyopenpose:
# platform这句也可以不写,因为自己的电脑已经确定是windows系统的了

# 获取当前该文件所在文件夹的绝对路径
file_path = os.path.dirname(os.path.realpath(__file__))
if platform == 'win32':
    # 我已经将openpose相关的库和环境都放在该文件目录下的Release和bin/x64中了,接下来获取它们的路径:
    lib_dir = 'Release'
    bin_dir = 'bin'
    x64_dir = 'x64'
    lib_path = os.path.join(file_path, lib_dir)
    bin_path = os.path.join(file_path, bin_dir)
    x64_path = os.path.join(file_path, x64_dir)  # 注意这里需要加入环境变量的是x64文件下的Release文件夹

    # 测试区
    # print(file_path)
    # print(lib_path)
    # print(bin_path)
    # print(x64_path)

    # 将以上的路径添加到环境变量中:
    sys.path.append(lib_path)  # 系统变量

    # 环境变量:
    os.environ['PATH'] += ';' + bin_path + ';' + x64_path + '\Release;'
    # print(os.environ['PATH'])

    try:
        # 导入pyopenpose:
        import pyopenpose as op
    except ImportError as e:
        print("fail to import pyopenpose!")
        raise e
else:
    print(f"当前电脑环境:\n{platform}\n")
    sys.exit(-1)

运行以上,代码如果没有问题,就可以继续编写代码了,如果出现问题,那么需要检查下会不会是因为复制错误了?

自己写的完整示例代码:(记得在imgs文件中放张图片)

#导入库
import argparse
import sys
import cv2
import os
from sys import platform

# import pyopenpose:
# platform这句也可以不写,因为自己的电脑已经确定是windows系统的了

# 获取当前该文件所在文件夹的绝对路径
file_path = os.path.dirname(os.path.realpath(__file__))
if platform == 'win32':
    # 我已经将openpose相关的库和环境都放在该文件目录下的Release和bin/x64中了,接下来获取它们的路径:
    lib_dir = 'Release'
    bin_dir = 'bin'
    x64_dir = 'x64'
    lib_path = os.path.join(file_path, lib_dir)
    bin_path = os.path.join(file_path, bin_dir)
    x64_path = os.path.join(file_path, x64_dir)  # 注意这里需要加入环境变量的是x64文件下的Release文件夹

    # 测试区
    # print(file_path)
    # print(lib_path)
    # print(bin_path)
    # print(x64_path)

    # 将以上的路径添加到环境变量中:
    sys.path.append(lib_path)  # 系统变量

    # 环境变量:
    os.environ['PATH'] += ';' + bin_path + ';' + x64_path + '\Release;'
    print(os.environ['PATH'])

    try:
        # 导入pyopenpose:
        import pyopenpose as op
    except ImportError as e:
        print("fail to import pyopenpose!")
        raise e
else:
    print(f"当前电脑环境:\n{platform}\n")
    sys.exit(-1)

# 获取图片路径和图片:
img_path = file_path + r'\imgs'
imgsList = os.listdir(img_path)
# print(imgsList)

# 建议在这之前可以了解一下argparse这个库:
parser = argparse.ArgumentParser()
parser.add_argument("--image_path", default=imgsList[0],
                    help="Process an image. Read all standard formats (jpg, png, bmp, etc.).")
args = parser.parse_known_args()
# print(args[0].image_path)

# 模型导入
params = dict()
# 这里的models用的是我们当前工程下的models文件夹
params['model_folder'] = file_path + r'\models'
# print(os.listdir(models['models_dir']))

# 启动pyopenpose:
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()

# 传入一张图片
datum = op.Datum()
imageToProcess = cv2.imread(img_path + r'/' + args[0].image_path, cv2.IMREAD_ANYCOLOR)
# print(imageToProcess)
datum.cvInputData = imageToProcess
opWrapper.emplaceAndPop(op.VectorDatum([datum]))

cv2.imshow("opStudy", datum.cvOutputData)
key = cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
运行结果

(六)避坑

①如果你直接运行"01_body_from_image.py",那么你可能会出现这样的错误:
“Error: OpenPose library could not be found. Did you enable BUILD_PYTHON in CMake and have this Python script in the right folder?”
这是因为,在这份文件中,它导入pyopenpose的目录不对,
我们的x64,bin,Release这些文件夹都必须是要对应在build文件夹中的,如果一定要运行这个文件,那么我推荐你将该文件中的导入路径全部修改为绝对路径,并指向你的build文件夹中的对应文件

②我一开始采用的是Anaconda下的虚拟环境,但是采用虚拟环境运行openpose的时候我发现导入不进pyopenpose库,这折腾我快2个小时的时间,最后当我切换成系统python.exe(3.8版本)作为pycharm的编译器时,就莫名其妙的可以运行了,这里我也没有搞懂是为什么?难道说虚拟环境下不能添加环境变量?如果有大佬懂的话可以替我讲解下!
如果有出现类似问题的同学,可以尝试改一下python编译器

(七)写在最后

搞定这个OpenPose几乎花了我两三天的时间,因为网上大多数都是有英伟达显卡的教程,想要安装到自己的windows并且是仅cpu模式,还要在pycharm中运行真的捣鼓了挺久。所以这才打算花了些时间写下了这篇文章,希望可以对您有帮助

要在PyCharm上安装OpenPose,你可以按照以下步骤操作: 1. 首先,确保你已经安装了PyCharm,可以从官方网站上下载并安装最新版本。 2. 打开PyCharm并创建一个新的Python项目。 3. 在PyCharm的终端窗口运行以下命令来安装OpenPose的依赖项: ``` pip install numpy opencv-python ``` 4. 下载OpenPose的源代码。你可以从OpenPose的官方GitHub存储库进行克隆或下载压缩文件。 ``` git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git ``` 5. 在PyCharm打开下载OpenPose代码文件夹。 6. 打开命令行终端并转到OpenPose文件夹。 7. 在终端运行以下命令来编译OpenPose: ``` cmake . make -j`nproc` ``` 8. 编译完成后,返回到PyCharm,打开创建的Python项目。 9. 在项目创建一个新的Python文件,并将以下示例代码复制到文件: ```python import cv2 import sys # 设置OpenPose的路径 sys.path.append('/path/to/openpose/python') from openpose import pyopenpose as op # 初始化OpenPose params = dict() params["model_folder"] = "/path/to/openpose/models/" opWrapper = op.WrapperPython() opWrapper.configure(params) opWrapper.start() # 加载图像 image_path = "/path/to/image.jpg" image = cv2.imread(image_path) # 运行OpenPose datum = op.Datum() datum.cvInputData = image opWrapper.emplaceAndPop([datum]) # 显示结果 cv2.imshow("OpenPose Result", datum.cvOutputData) cv2.waitKey(0) cv2.destroyAllWindows() ``` 10. 替换代码的`/path/to/openpose`和`/path/to/image.jpg`为你的OpenPose文件夹路径和图像文件路径。 11. 运行代码,你应该能够看到OpenPose在图像上检测姿势并显示结果。 请注意,安装和配置OpenPose可能需要一些时间和配置,因此请确保按照官方文档和要求进行操作。
评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值