Openpose安装以及运行

  文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。

 相关文章:

  1. 协同过滤推荐算法和基于内容推荐算法的区别?
  2. 推荐算法的分类
  3. MMOE原理介绍

目录

1.1直接下载安装好的包

1.2 下载源码编译

 2. 下载模型

 3.测试小例子


OpenPose是一种先进的实时多人人体关键点检测和全身姿态估计的深度学习框架,由Carnegie Mellon University和Adobe Research开发。它的核心原理是通过深度卷积神经网络(CNN)和条件随机场(CRF)相结合的方式,对图像或视频中的多个人体进行全身姿态估计和关键点检测。OpenPose能够同时识别并定位25个身体关节,包括面部、手部、脚部以及身体的主要部位,这对于动作捕捉、人体跟踪、游戏交互、医学影像分析等领域具有重要意义。

OpenPose的架构分为两个主要部分:一是多尺度金字塔网络(Multi-Person Pose Estimation Network),用于检测人体轮廓和关键点;二是人体部件解码器(Part Affinity Fields),用于确定每个关键点与其周围其他关键点的关系。网络采用级联结构,先进行粗略的人体检测,再逐步细化到关键点定位,提高了效率和准确性。

此外,OpenPose还具有以下特点:

  • 支持2D实时多人关键点检测,能够检测15、18或25个身体/脚部关键点,包括6个脚部关键点。
  • 支持2x21个手部关键点和70个面部关键点的检测,但这些的运行时间依赖于检测到的人数。
  • 支持3D单人关键点检测,以及相机参数的校准工具箱。
  • 支持多种输入源,包括图像、视频、网络摄像头、Flir/Point Grey相机、IP相机等,也支持自定义输入源。
  • 输出包括基本图像和关键点显示/保存,以及关键点的数组类,支持自定义输出代码。

OpenPose的安装和使用相对简单,提供了命令行演示和C++/Python API,方便用户根据自己的需求进行功能扩展和自定义。它是开源的,主要用于研究目的,并鼓励社区提供反馈和贡献代码。

OpenPose算法的改进和优化也在持续进行中,包括数据增强、网络结构优化、多尺度特征融合以及关键点后处理等,以提高模型的准确性和鲁棒性。此外,OpenPose的论文和代码是开源的,为学术界和工业界提供了宝贵的资源,促进了人体姿态估计技术的发展。

1.准备环境

  1.1直接下载安装好的包

   我的电脑只有CPU,所以只安装Cpu版本的openpose

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

 下载完了openpose-1.7.0-binaries-win64-cpu-python3.7-flir-3d.zip文件,然后在相应的目录解压文件。

 1.2 下载源码编译

   如果下载源码编译,网上有很多教程,自行谷歌一下

2. 下载模型

解压该Zip文件,找到getBaseModels.bat文件,双击运行getBaseModels.bat文件即可自动下载所需要的文件,由于我们公司可以连外网,下载比较快。

 3.测试小例子

进入python目录,运行测试小例子

 python运行该代码:

# From Python
# It requires OpenCV installed for Python
import sys
import cv2
import os
from sys import platform
import argparse

try:
    # Import Openpose (Windows/Ubuntu/OSX)
    dir_path = os.path.dirname(os.path.realpath(__file__))
    try:
        # Change these variables to point to the correct folder (Release/x64 etc.)
        sys.path.append(dir_path + '/../bin/python/openpose/Release');
        os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/../x64/Release;' + dir_path + '/../bin;'
        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

    # Flags
    parser = argparse.ArgumentParser()
    parser.add_argument("--image_path", default="../examples/media/COCO_val2014_000000000192.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()

    # 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.imwrite("d:\\ddd.jpg", datum.cvOutputData)
    cv2.waitKey(0)
except Exception as e:
    print(e)
    sys.exit(-1)

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值