计算机视觉教程7-3:Openpose配置与实践
1 什么是Openpose?
OpenPose是在单图像上联合检测人体、手、面部和脚关键点(总共135个关键点)的实时多人系统。
抖音“尬舞”机就应用了人体关键点检测技术:
就像玩真实的跳舞机一样,屏幕里伴随着音乐会不断出现不同动作图形,用户需要及时摆出对应的动作才能得分,随着动作的进程系统会发出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\bin
、openpose\models
、openpose\build\x64\Release
目录复制进来,把Openpose\build\python\openpose
的三个文件复制进来,否则会报错。
新建一个test.py文件用于测试接口,下面的例程需要插入一个USB摄像机,没有设备的话可以把cv2.imread()替换成自己的图片。
import sys
import cv2
import os
from 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 op
except 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 e
if __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/openpose
cd openpose/
git submodule update --init --recursive --remote
配置opencv、caffe以及一些依赖
sudo apt-get install libopencv-dev
cd openpose
sudo 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 项目实战
🔥 更多精彩专栏:
- 点赞
- 收藏
- 关注作者
评论(0)