目录
一、详细教程,先看一下问题汇总,使用该教程时也参考一下问题里的注意事项:
1. Visual Studio版本建议:用2019或者2017,我用2022试过最后生成解决方案时没有成功,大概率是版本问题,后面改成2019以后就成功了。
2.Python版本建议:最好一开始就用Python3.7版本,不然试错的代价太大。这边需要注意两个位置:
3.下载所需的models:(将下面链接复制到迅雷上下载!!!)
7.自己创建的python openpose项目,代码结构如下:
①ModuleNotFoundError: No module named 'pyopenpose':
②ImportError: DLL load failed: 找不到指定的模块:
一、详细教程,先看一下问题汇总,使用该教程时也参考一下问题里的注意事项:
二、问题汇总及解决方案:
1. Visual Studio版本建议:用2019或者2017,我用2022试过最后生成解决方案时没有成功,大概率是版本问题,后面改成2019以后就成功了。
2.Python版本建议:最好一开始就用Python3.7版本,不然试错的代价太大。这边需要注意两个位置:
①Cmake编译的时候:一般搜索路径默认为Python安装包下的python.exe等,但是如果系统安装的Python版本不是3.7,则需要更改路径,将默认路径覆盖:
网上一些教程里面Name用的是PYTHON_EXECUTABLE,这个根据Generate以后Cache里的内容判断用哪个,如下所示就是覆盖成功了。
我电脑的python版本是3.6,conda下的Python版本是3.11,所以用的是conda创建的虚拟环境,Python版本为3.7。
②调用openpose生成的.pyd文件,也要在Python3.7的环境下,不然也会出现版本不兼容的问题。
3.下载所需的models:(将下面链接复制到迅雷上下载!!!)
也可以在这里下载:https://download.csdn.net/download/qq_44705642/89294842
①face模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel
②hand模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel
③pose/body_25模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel
④pose/coco模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel
⑤pose/mpi模型:http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel
4.下载3rdparty/windows下的包:
可以在这里下载:https://download.csdn.net/download/qq_44705642/89295001(提供了几个版本的配置包,应该可以找到你所需要的)
将下图几个.bat文件中的链接复制到迅雷上下载:
5.生成解决方案成功,但是在运行时出现以下报错:
这种情况是在下图中环境的路径下搜索不到.dll文件,可以将…/build/bin添加到环境路径中,如果这个方法不行,可以将…/build/bin下所有.dll文件复制到…\build\x64\Release下:
6.运行demo的时候没有出来关节点:
models下的模型文件损坏了,需要重新下载。
7.自己创建的python openpose项目,代码结构如下:
bin文件夹拷贝于…/build/bin,将…\build\x64\Release下的openpose.dll也拷贝进去;example、models文件夹拷贝于…\build同级文件夹下的example、models文件夹;pyopenpose.cp37-win_amd64.pyd拷贝于…\build\python\openpose\Release。
可能出现下列两种情况的报错:
①ModuleNotFoundError: No module named 'pyopenpose':
这种情况主要问题是没有找到.pyd文件。
可能是.pyd文件没能在sys.path的所有路径里面找到,可以打印sys.path确定一下,然后添加到系统环境路径。
print(sys.path)
dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path + '/bin')
也可能是Python环境版本和.pyd文件的编译版本不一样。Python3.7版本会去sys.path里面找后缀为cp37-win_amd64.pyd的文件,如果是用的Python3.8编译,会得到后缀为cp38-win_amd64.pyd的文件,版本不同就没法搜索到。
②ImportError: DLL load failed: 找不到指定的模块:
这种情况是找到了.pyd文件,但是在导入相应的.dll文件的过程中没有找到.dll文件。在我的代码中,是需要去./bin文件夹下导入所有的.dll文件,则需要将./bin文件夹添加到os.environ['PATH']中。
dir_path = os.path.dirname(os.path.realpath(__file__))
os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/bin;'
③第二种错误的终极解决方法:
.pyd是在sys.path中搜索,.dll会在.pyd所在路径和os.environ['PATH']中搜索。如果还报第二种错误,则把.pyd和所有.dll都放在一个文件夹,然后把.pyd所在文件夹路径添加到sys.path中。
三、总结
最近安装openpose遇到了很多问题,基本把所有的坑都踩了个遍,希望该文章能对各位友友有所帮助,都顺利安装成功。如果安装过程中仍有问题,欢迎留言交流。