草庐IT

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

束发 2023-10-23 原文

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

(一)前言

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

(二)准备工作

  • git安装(由于网上的教程较多,这里就不详细介绍)
  • cmake安装(这里本人采用的是3.22版本,其他版本应该也可以,同样不详细介绍安装方式)
  • vs2019(功能下载里需要选择"使用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_estimation文件夹下,在该文件夹下打开cmd命令行,输入以下指令:

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

稍微等待一段时间,当然了你也可以选中"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地址:

同样的,接下来打开命令行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

最后就是这样的:

5.models下载

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

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

(2)如果你觉得这样的下载方式还是比较慢的话,让我们用记事本打开getModels.sh文件
在这里可以看到:

要下载的models所在网址,还有文件名称,你要做的就是将上图中两个红色框框起来字符串拼接起来然后扔进迅雷下载,(注意该文件下面还有其他几个models要下载)

6.CMake

在完成了上述那些配置之后,接下来就要用到CMake了。
首先让我们在openpose目录下新建一个build文件夹:
D:\openpose_estimation\openpose\build

点击左下角的“Configure”:弹出如下窗口:

需要注意的是,这里的"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”

点击”Open Project“即可在VS2019中打开build好的C++工程。
如果这一步打不开工程的话,那就进入到build文件夹中:

在这里也可以打开工程

7.在VS2019中生成pyopenpose

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

首先需要选中"Release":

接下来,右键"OpenPoseDemo",点击"生成"

然后右键"pyopenpose",点击"生成"

接下来等待生成完毕即可,如果跟着做到这一步没有任何问题的话,那基本就无误了,生成完成后,可以在build文件夹中看到如下

接下来进入该文件夹下的openpose/Release
(D:\openpose_estimation\openpose\build\python\openpose\Release)
可以看到这里就是我们的pyopenpose库了

(五) 在PyCharm中使用OpenPose

首先可以在build文件夹中看到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”。这几个文件夹先不要新建。

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并放入到我们的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中运行真的捣鼓了挺久。所以这才打算花了些时间写下了这篇文章,希望可以对您有帮助

有关win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  7. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  8. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  9. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  10. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

随机推荐