window下运行OpenPose(仅CPU版本)

前言

之前一直想做一个与Open Pose姿态估计相关的项目,一直没下手,这次有时间了就想着试一下,结果网上大多数都是GPU版本,而CPU版本有些时候还会报很多错误,我看了网上很多博客,最后成功运行,当然,本篇博客只能做到输出标记骨骼点后的图片,没有后续分类的部分。

特备感谢下面两位博主的文章,受益匪浅

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

【精选】openpose环境搭建(详细教程CPU/GPU)windows 10+python 3.7+CUDA 11.6+VS2022_openpose安装-CSDN博客

配置信息

1.Visual Studio 2017

2.Cmake3.22,下载地址如下

Release v3.22.2 · Kitware/CMake (github.com)

3.Pycharm2022.3.2

环境配置我是用Anaconda 新建的3.7版本的环境,其中安装有opencv-python,安装代码如下:

pip install opencv-python  

注意:环境不同会导致报错,我之前就用3.8的,一直报错,显示找不到pyopenpose库。

首先,我们去Github上下载官方的OpenPose的Demo,网站如下:

GitHub - CMU-Perceptual-Computing-Lab/openpose: OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation

下载解压后如下:

在以上目录下新建文件夹 build_cpu

现在下载的东西还是欠缺很多文件的

3rdparty文件下载

在以下目录:

下载caffe和pybind11两个文件解压缩后替换如下两个文件

下一级文件夹如下,一定要一模一样,我之前解压后还有一层,这个也会报错,并且解压后名字应该是caffe-master,得改成caffe,pybind11同理

打开是这样的:

如果打开文件后是只有一个文件夹,那得把它提出来

windows文件夹如下

可以直接点击bat文件下载,但是我也下不了,就是打开找网站了具体如下:

Caffe:

http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe_16_2020_11_14.zip

Caffe3rdparty:

http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe3rdparty_16_2020_11_14.zip

Freeglut

http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/freeglut_2018_01_14.zip

OpenCV

http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/opencv_450_v15_2020_11_18.zip

最后一个可以加不加,都没关系

最后如下,压缩包也放进去,cmake好像有判断是否有压缩包,没有他就去下,容易失败。

model下载

model里面是这样的,打开你会发现文件夹都是空的,这时,你可以通过点击bat文件下载,但我死活下载不了,直接把这个文件用记事本打开可以找到下载地址,用迅雷下载还是挺快的

各个下载地址如下:

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

        coco:

http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel

        mpi

http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel

Cmake

把每个文件放进文件夹后运行cmake,可以在按下win标,搜索查找之前安装的cmake

第一行与第三行如上图所示填写,然后点击Add Entry

第三个找你的环境中的python.exe,点击OK添加

然后点击Configure

前两个如上设置,其他不变

这几个地方改就行了。

然后再按一次Configure

在下方出现Configuring done

点击General,General done后点击Open Project,如果打不开可以在文件夹如下位置的.sln文件打开

打开后设置为Release

然后在如下两个文件右击,点击生成

第一次生成后如下:

第二个如下

这时候,可以选中OpenPoseDemo,运训该文件,是一个调用电脑摄像头并实时检测的一个程序

运行项目

之后打开一下py文件中的一个,我这里举例第一个

运行后:

这个地方汇报一个找不到pyopenpose的错误,我真的被他折磨良久,后来我把vs,python环境全部重新搭建后就可以运行了

新建程序

那如何跑自己的图片呢?

我们随意的新建一个文件夹,我新建的如下:

在里面新建三个文件夹,bin,models,examples,examples这个可有可无,我是建出来放图片的

在原来那个文件夹里的pyopenpose.cp37-win丢到上述目录下

将下面的.dll文件和bin内文件全部放进新建文件夹的bin文件夹内

然后将下方所有文件放入models文件夹中

如何用pycharm打开这个文件夹,新建python文件,代码已准备好

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

dir_path = os.path.dirname(os.path.realpath(__file__))

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="examples/COCO_val2014_000000000623.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

# Construct it from system arguments
# op.init_argv(args[1])
# oppython = op.OpenposePython()

# 修改参数
 # 修改分辨率,可以降低对显存的占用 (16的倍数)
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)

修改一下文件路径就可以跑自己的图片了

跑视频

你可能会问,可以跑图片,那我怎么跑视频呢?

我这边想到的方案是把视频一帧一帧解开,然后对每一帧进行处理,然后连成一个视频,这里使用oepncv库的函数实现

代码参考如下博客:

使用Python实现MP4格式视频与图片相互转换_python videowriter_fourcc-CSDN博客

尾言

如果想要用博主的文件做对照,可扫描下方二维码关注公众号,发送”深度学习-OpenPose_Demo(CPU)",获得网盘地址。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值