openpose环境搭建

news2025/1/9 2:44:56

编程如画,我是panda!

最近学习要用要openpose,配了三天的环境,快疯了,踩了很多坑,在这里和大家分享一下

 

目录

前言

一、安装openpose

二、运行openpose

三、常见的两个错误

1. No module named 'pyopenpose'

2. DLL load failed while importing pyopenpose: 找不到指定的模块


前言

OpenPose 是一款开源的人体姿势估计库,能够在图像或视频中检测和估计人体的关键点位置,包括头部、身体、四肢等部位。OpenPose使用深度学习技术,特别是卷积神经网络(CNN),来实现高效且准确的人体姿势估计。该库的目标是为计算机视觉、机器学习和人机交互等领域提供一个通用、易用的工具,使开发者能够轻松地获取有关人体动作和姿势的信息。由于其强大的功能和开放源代码的特性,OpenPose在许多领域,如人体行为分析、虚拟现实、健康监测等方面得到广泛应用。

一、安装openpose

安装openpose的话可以参考官方给出的文档:(对英语基础不好的小伙伴可能看着有点头疼)openpose/doc/installation/0_index.md at master · CMU-Perceptual-Computing-Lab/openpose · GitHub

也可以看一下这个up主的视频:windows编译openpose及在python中调用_哔哩哔哩_bilibili 

我的话在网上搜了很多教程,但是一直编译不好,一个接一个的错误,太难受了,我建议如果想省事的话,直接用我给出的链接吧:

链接:https://pan.baidu.com/s/1O27lKereBU4VsDEeh_DpYQ 
提取码:duk8 

里面有两个版本,一个是pyhton3.7的一个是python3.8的,python3.8的里面没有CPU版本的,只有GPU版本的。

python3.7版本来自:openpose环境搭建(详细教程CPU/GPU)windows 10+python 3.7+CUDA 11.6+VS2022_openpose安装

python3.8版本来自:windows编译openpose及在python中调用 - 迷途小书童的Note迷途小书童的Note (xugaoxiang.com)

两个博主讲的都很好,跟着他们一步一步做没有什么问题,如果出现了编译的问题,检查一下是不是需要下载的资源没有下;
如果是出现Error: OpenPose library could not be found. Did you enable `BUILD_PYTHON` in CMake and have this Python script in the right folder?
No module named 'pyopenpose'或者DLL load failed while importing pyopenpose: 找不到指定的模块,这两个问题,请看我下面的讲解。

如果使用GPU版本的openpose,一定要确认好自己有英伟达的显卡,并且下载好了CUDA和cuDNN,如果没有安装好的可以参考我之前发的博客:
不同版本CUDA和cudnn下载安装并配置环境变量

二、运行openpose

这里以python3.7GPU为例:
首先创建自己的工程文件夹 :

然后将build文件夹里面的model文件夹复制过去,然后创建bin文件夹:

将 openpose_py3.7\buildGPU\python\openpose\Release路径下的文件:

复制到你自己工程项目文件的bin目录和根目录下,然后打开openpose_py3.7\buildGPU\x64\Release,将这个文件同样复制到你的项目bin目录下:

最后打开这个目录openpose_py3.7\buildGPU\bin,将里面的文件全部复制到你的项目bin目录里,最后你的项目文件夹应该是这样的:

用你的IDE打开这个项目文件,我这里选用VSCode:

python环境一定要是python3.7的不然会报错,然后提前下载好opencv:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

 在bin目录下创建pyhton文件test.py:

在test.py中输入以下代码:

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

dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path)
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="w.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


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)

然后点击运行,得到结果:

三、常见的两个错误

1. No module named 'pyopenpose'

出现这个错误的可能有很多种,我说一下最常见的两种,一种是你的python解释器并不是对应版本,另一种是这个文件你只放了一个地方,项目文件的bin目录和根目录都要有这个文件。

2. DLL load failed while importing pyopenpose: 找不到指定的模块

出现这个问题的原因是程序找不到你的DLL文件,一定要把python文件放在bin目录下才能运行,或者使用官方示例给出的添加路径的办法,但是添加了我有时候也运行不起来,所以我建议还是直接放在bin目录里面吧,省事。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1388633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习论文解读分享之diffGrad:一种卷积神经网络优化方法

IEEE TNNLS 2020:diffGrad: 一种卷积神经网络优化方法 题目 diffGrad: An Optimization Method for Convolutional Neural Networks 作者 Shiv Ram Dubey , Member, IEEE, Soumendu Chakraborty , Swalpa Kumar Roy , Student Member, IEEE, Snehasis Mukherjee…

leetcode234. 回文链表

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入:hea…

西米支付:到底什么是NFT(数字藏品支付通道)(NFT支付通道)

NFT到底指的是什么呢? 数字藏品的实际意义在于它们打破了传统艺术品的物质形态束缚。数字藏品可以通过虚拟现实和区块链技术进行创作、展示和交易。它们不仅可以满足人们对艺术品的审美需求,还可以成为一种投资和资产保值增值的方式。数字藏品的实际意义…

线控底盘新玩家凶猛!这家企业的ONE-BOX产品正式量产下线

高工智能汽车获悉,12月27日,威肯西科技宣布旗下ONE-BOX线控制动产品--液压解耦制动系统HDBS实现量产下线。该产品将与多个汽车品牌签署量产及定点协议,预计年产量达到60万套。 据了解,作为耀宁科技集团的一级子公司,威…

Javascript 下载方法分享

一、引言 JavaScript是一种广泛使用的编程语言,用于增强网页交互性和动态功能。然而,有时我们需要将JavaScript代码下载并部署到本地服务器或离线环境中。本文将分享一些常用的JavaScript下载方法。 二、直接下载JavaScript文件 手动下载:…

机器学习-决策树

1、什么是决策树? 一种描述概念空间的有效的归纳推理办法。基于决策树的学习方法可以进行不相关的多概念学习,具有简单快捷的优势,已经在各个领域取得广泛应用。 决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试&a…

徐州数字孪生元宇宙赋能工业智能制造,助力传统制造业数字化转型

徐州数字孪生元宇宙赋能工业智能制造,助力传统制造业数字化转型。在徐州市制造业企业数字化转型的过程中,数字孪生技术的应用已经取得了显著成效。一方面,企业的生产效率得到了显著提高,产品质量也得到了有效保障。另一方面&#…

项目管理中,怎么进行项目过程管理?

项目经理在项目管理中会遇到许多问题,其中最令人头痛的莫过于项目计划执行不到位,进度难以跟踪,项目延期严重。这些问题导致项目计划看似存在,但实际上与无计划相差无几。 对于项目团队内部,项目经理常常抱怨团队成员…

Java后端sql编写

Java后端sql编写 注意事项二级目录三级目录 注意事项 在后端编写sql,不要直接编写sql语句进行查询 比如直接在service实现类中写下图这种语句 二级目录 三级目录

thinkphp 命令行执行

1 php 1 which php 查看命令来源 2 ll /usr/bin/php 软连接,来源是php的安装文件的可执行文件php 3 $PATH的作用, 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成如下, echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/…

贴纸SDK多少钱?

贴纸已经成为了表达自我、分享情感的重要工具,美摄科技,作为一家领先的技术解决方案提供商,致力于为企业提供卓越的贴纸SDK(软件开发工具包)技术解决方案。本文将深入探讨美摄科技贴纸SDK的价值、优势以及如何为企业创造价值。 一…

K8S----YAML

kubernetes中资源可以使用YAML描述(如果您对YAML格式不了解,可以参考YAML语法),也可以使用JSON。其内容可以分为如下四个部分: typeMeta:对象类型的元信息,声明对象使用哪个API版本&#xff0c…

linux云服务器 如何将数据盘挂载到系统盘上面?

先认识认识下面几个常用命令 lsblk 命令:查看设备列表,也就是能看到系统盘和数据盘一般为:vda(系统盘)、vdb(数据盘)等等 lsblk"ls" 是 "list" 的缩写: lsblk…

❤ uniapp 开发小程序环境搭建和使用零(0 开篇-介绍和运行)

♥ uniapp 环境搭建 1、简单介绍 拿HbuildX写代码开发,然后把程序运行到微信开发者工具 开发uniapp小程序需要用到的两个工具 HbuildX [开发小程序使用] https://www.dcloud.io/hbuilderx.html 微信开发者工具 HbuildX开发的小程序运行到微信开发者工具 https://de…

cesium设置近地天空盒 天空会倾斜

上篇文章讲解了如何设置近地天空盒,效果出来了还是发现天空是斜的 https://blog.csdn.net/m0_63701303/article/details/135618244 效果: 这里需要修改Cesium.skyBox的代码,代码如下直接全部复制组件内调用即可 skybox_nearground.js&…

100个实战项目——在树莓派4B+Ubuntu20.04桌面版配置下运行智能小车(一)

主机SSH远程链接从机 查看python版本 python 我的是python3.8 所以我需要安装pip3 sudo apt install python3-pip 接着安装程序需要的引脚库 sudo pip3 install RPi.GPIO 注意必须要有sudo,因为我是远程遥控的树莓派,没有权限运行程序&#xff0…

GaussDB数据库中的MERGE INTO介绍

一、前言 二、GaussDB MERGE INTO 语句的原理概述 1、MERGE INTO 语句原理 2、MERGE INTO 的语法 3、语法解释 三、GaussDB MERGE INTO 语句的应用场景 四、GaussDB MERGE INTO 语句的示例 1、示例场景举例 2、示例实现过程 1)创建两个实验表,并…

不同场景中,低代码平台如何进行表单校验?应对复杂业务数据校验

在当今的数字化时代,表单已经成为应用程序与用户交互的重要界面。而表单校验则是确保数据准确性和完整性的关键环节。本文以JVS低代码为例,详细介绍如何在低代码平台上进行表单校验的配置,以确保不同情况下的数据验证需求得到满足。我们将探讨…

Oracle-java下载、开源/商业许可证(收费、免费说明)、版本发布日志

Oracle-java下载、开源/商业许可证(收费、免费说明)、版本发布日志 下载开源/商业许可证(收费、免费说明)java8版本发布日志以上是一般情况,具体的以官网发布信息为准 下载 下载地址:https://www.oracle.c…

图像分类 | 基于 Labelme 数据集和 VGG16 预训练模型实现迁移学习

Hi,大家好,我是源于花海。本文主要使用数据标注工具 Labelme 对自行车(bike)和摩托车(motorcycle)这两种训练样本进行标注,使用预训练模型 VGG16 作为卷积基,并在其之上添加了全连接…