> 文档中心 > 计算机视觉教程7-3:Openpose配置与实践

计算机视觉教程7-3:Openpose配置与实践

在这里插入图片描述


目录

  • 1 什么是Openpose?
  • 2 Windows下配置Openpose
    • 2.1 下载openpose
    • 2.2 配置第三方库与模型
    • 2.3 编译Openpose
    • 2.4 生成项目与测试
  • 3 Python调用Openpose
  • 4 附录: Ubuntu下配置Openpose
    • 4.1 下载Openpose并配置第三方
    • 4.2 编译openpose
    • 4.3 测试

1 什么是Openpose?

OpenPose是在单图像上联合检测人体、手、面部和脚关键点(总共135个关键点)的实时多人系统。

在这里插入图片描述

openpose(图源github.com)

抖音“尬舞”机就应用了人体关键点检测技术:

就像玩真实的跳舞机一样,屏幕里伴随着音乐会不断出现不同动作图形,用户需要及时摆出对应的动作才能得分,随着动作的进程系统会发出perfect 、good以及连击音效。

应用openpose检测出人体关键点,再和预设舞蹈的关键点作比较,就可以判定得分,实现上述功能。

2 Windows下配置Openpose

2.1 下载openpose

新建空白目录,使用git bash运行

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

也可以到openpose仓库直接下载开源压缩包到本地。

2.2 配置第三方库与模型

下载openpose完毕后进入openpose\3rdparty\windows依次点击下面的.bat文件安装第三方库。
在这里插入图片描述
安装完毕如下所示:

在这里插入图片描述
进入openpose\model点击getModels.bat下载模型,下载完成后如下

在这里插入图片描述

2.3 编译Openpose

在openpose根目录下新建文件夹build,打开CMake GUI,源文件选择openpose根目录,编译文件选择build文件夹,如下

在这里插入图片描述
Build中勾选下面的选项:

在这里插入图片描述
其中BUILD_CAFFE用于编译caffe库,BUILD_PYTHON用于编译Python接口,后面想使用Python调用Openpose务必要勾选(有的教程怕出错不勾选)。

CUDA方面之前配置过会自动链接并显示版本号的,没有GPU的同学可以勾选CPU_ONLY用CPU来跑这个模型,但是运行不流畅。没有安装CUDA的同学先行安装CUDA以及对应版本的Cudnn。
在这里插入图片描述
之后点击Configure按钮,在Windows下请选择对应Visual Studio版本号和PC位数;在Ubuntu下请选择Unix MakeFile

Configure完成后如下:

在这里插入图片描述
因为勾选了BUILD_PYTHON,所以CMake为链接到本机上的Python编译器。

最后点击Generate即可。

2.4 生成项目与测试

点击CMake中的Open Project进入VS,右键项目重新生成解决方案。

在这里插入图片描述
经过一段时间的编译后,会在build/x64/Release下生成可执行文件。
在这里插入图片描述
build\bin中的*.dll以及根目录下的model复制到build/x64/Release中,即可测试实例。

在这里插入图片描述

3 Python调用Openpose

再新建一个文件夹用于测试Python API。

openpose\build\binopenpose\modelsopenpose\build\x64\Release目录复制进来,把Openpose\build\python\openpose的三个文件复制进来,否则会报错。

在这里插入图片描述
新建一个test.py文件用于测试接口,下面的例程需要插入一个USB摄像机,没有设备的话可以把cv2.imread()替换成自己的图片。

import sysimport cv2import osfrom sys import platform# Import Openpose (Windows/Ubuntu/OSX)dir_path = os.path.dirname(os.path.realpath(__file__))try:    # Windows Import    if platform == "win32": os.environ['PATH']  = os.environ['PATH'] + ';' + dir_path + './Release;' +  dir_path + './bin;' import pyopenpose as op    else: # Change these variables to point to the correct folder (Release/x64 etc.) sys.path.append('../../python'); from openpose import pyopenpose as opexcept ImportError as e:    print('Error: OpenPose library could not be found. Did you enable `BUILD_PYTHON` in CMake and have this Python script in the right folder?')    raise eif __name__ == "__main__":    # 设置Openpose模型并初始化    params = dict()    params["model_folder"] = "./models/"    opWrapper, datum = op.WrapperPython(), op.Datum()    opWrapper.configure(params)    opWrapper.start()    # 启动摄像头    capture= cv2.VideoCapture(0)    while(1): ref,frame = capture.read() # 载入当前帧到Openpose datum.cvInputData = frame     opWrapper.emplaceAndPop(op.VectorDatum([datum])) # 模型输出图像 process = datum.cvOutputData   # 显示 cv2.imshow("test", process) if not ref:     break key = cv2.waitKey(1) & 0xFF if key == 27:      print("Escape hit, closing...")     break

显示效果如下:

在这里插入图片描述
在这个基础上可以进一步二次开发。

4 附录: Ubuntu下配置Openpose

4.1 下载Openpose并配置第三方

下载openpose

git clone https://github.com/CMU-Perceptual-Computing-Lab/openposecd openpose/git submodule update --init --recursive --remote

配置opencv、caffe以及一些依赖

sudo apt-get install libopencv-devcd openposesudo bash ./scripts/ubuntu/install_deps.sh

4.2 编译openpose

打开CMake-GUI

cd {OpenPose_folder}mkdir build/cd build/cmake-gui ..

其余部分同Windows过程

4.3 测试

# 视频./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution '160x80'# 图片./build/examples/openpose/openpose.bin --image_dir examples/media/ --net_resolution '160x80'

🚀 计算机视觉基础教程说明

章号                                    内容
  0                              色彩空间与数字成像
  1                              计算机几何基础
  2                              图像增强、滤波、金字塔
  3                              图像特征提取
  4                              图像特征描述
  5                              图像特征匹配
  6                              立体视觉
  7                              项目实战

🔥 更多精彩专栏

  • 《机器人原理与技术》
  • 《计算机视觉教程》
  • 《机器学习》
  • 《嵌入式系统》
  • 《数值优化方法》

👇配套代码 · 优质体验 · 系统知识 请关注👇