记录一下windows11编译Openpose的过程

今天下午开始编译Openpose,到现在才编译成功,真的是编译了3个小时。。。
好在结果出来了,也算有一点安慰。下面上正题~
编译前的准备
visual studio, cmake这些是编译的常规操作了,具体看官网说明,我的VS是2022所以也捣鼓了一头灰。
先给一个大佬的链接吧,新手只能按照步骤好好来。
openpose安装教程(win10)
总结下来就是
1)下载openpose 源码
https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
2)检查源码的完整性并补全文件
因为我下载的openpose 路径下的3rdparty 文件夹下的caffe 和pybind11文件夹确实是空文件夹,可能官网的链接可能就是一件大衣下很多空壳需要去填空。
去下载caffe: https://github.com/CMU-Perceptual-Computing-Lab/caffe.git
去下载pybind11: https://github.com/pybind/pybind11.git

3)执行目标路径下的bat文件
①下载依赖工具包
(其实是执行下载,可以打开bat看看,也可以看看cmakelist.txt文件555行那个 # Download required zip files 提示下面就懂了)就是下载。其Zip文件要解压到对应文件夹,如果有的没有caffe_cpu文件夹,有可能就是设备带显卡,因为开发者会建议用GPU。。。
我要强制程序跑在cpu,所以我去拷贝了别人的caffe_cpu文件夹,如果没有自行百度。。。
在这里插入图片描述
注意:如果网速过慢,无法在运行bat弹出的黑窗口中下载,记得把黑窗口中网址拷贝到浏览器去下载,然后把下载好的Zip 包拷贝到3rdparty/windows 路径下,且这一份不要删除!!!同时,zip解压的文件夹应归并到对应的文件夹。
如caffe_16_2020_11_14.zip 解压后caffe文件夹中的内容copy到windows/caffe路径下。记住不要删除zip文件。
在这里插入图片描述
其他zip 依次类推完成。

②下载模型
运行如下bat就可以下载
在这里插入图片描述
这里要注意了,模型真的超级大,网速不好就自己下载然后拷贝到路径吧。
4)编译openpose
没错,前面的都是准备工作,要下好多包,直到下载完所有,才能进入到编译环节。
打开cmake,设置进入编译
在这里插入图片描述

先configure一下,然后做下面的设置
目前我不想在python运行,而且我也不打算用GPU,而且我希望下载所有模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没错,我把caffe全走caffe_cpu文件夹了,因为新电脑还没有用cuda干过,还是先保险都走cpu.
在这里插入图片描述
然后继续configure…
注意:
会发现在cmake的输出窗口还提示正在下载zip文件(然而这几个zip文件我们前面已经下载过了,而且就在目标路径下,前面已经叮嘱过不能删zip),如今又卡着了。。。

那么回到源码路径修改cmakeList.txt文件吧,直接加#注释掉了,因为已经提前下载过了,不提前准备就太难下载了。。。
在这里插入图片描述

在这里插入图片描述
完成这个,cmake 界面接着configure然后就没错误了
接着就cmake 界面 Gernerate就可以生成工程框架了,
然后 cmake 界面 Open porject可以打开工程进行编译生成了
还是按照博文,先把工程改为release,可以直接运行,也可以生成All Build,还可以把想看的示例设为启动项进行生成
我就是想看这个基于图片的人体关节点的工程:
在这里插入图片描述
看效果
在这里插入图片描述
PS:运行实时检测的工程真的超级慢啊,卡到离谱,难怪作者建议用GPU呢。。。
5)把Openpose生成的exe应用到自己的工程
想把Openpose编译好的工程用到自己的软件中进行开发,那么就需要做好连接。

我为了不在项目属性配置环境路径啥的,我是把需要用到的exe文件拷贝到我的工程路径下,且直接把前面OpenPose编译输出的路径下build\bin 下的*.dll 和models文件夹都拷贝到了我的路径中,而且运行的时候其实质是通过命令执行的方式去设置的exe起来以后检测图片的路径的。如下
首先我封装了一个调用类,其构造函数中需要给出图片的本地路径和输出路径。
(方然openpose编译源码的那些例子的代码其实也可以改,比如改一些输出显示存储之类的,改完重新编译然后按照这个方法去调用妥妥的)

// 构造函数,初始化图片路径和输出文件路径
PoseProcessor(const std::string& imagePath, const std::string& outputTxtPath)
	: imagePath(imagePath), outputTxtPath(outputTxtPath) {}

// 调用exe处理设定路径下图片
void processImage( const std::string& exeName, const std::string& picName)
{
	std::string command = exeName + " " + " " + imagePath + picName; // "color0.png ";
	std::cout << "Executing command: " << command << std::endl;
	int result = system(command.c_str());
	if (result != 0) 
	{
		std::cerr << "Error: Failed to execute the command1." << std::endl;
	}
}

调用

PoseProcessor processor(inputColorPath, inputColorPath);
std::string strexeName = "01_body_from_image_default.exe";//我要用的exe
std::string strPicName = "color0.png";//我路径下的要处理的图片
processor.processImage(strexeName, strPicName);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值