openpose环境搭建

编程如画,我是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目录里面吧,省事。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RANSAC(Random sample consensus)随机抽样一致性

文章目录 算法介绍实现过程以直线拟合为例直线的描述源码参考连接 算法介绍 RANSAC(Random Sample Consensus)是一种迭代的参数估计算法,用于从包含噪声和异常值的数据中拟合数学模型。它最初由Fischler和Bolles于1981年提出,被广…

soso移动营业大厅(纯后端+MySQL数据库+JDBC)

一、项目需求 中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各…

[HNCTF 2022 Week1]What is Web

flag 在源码里 <! 是 HTML 文档的注释格式&#xff0c;在源码里按 Ctrl F 搜索 <! 能帮你更快地找到提示。 将这个字符串 base64 解码得到 flag &#xff1a;

React Native 环境安装

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 搭建开发环境 React Native 中文网 Homebrew&#xff08;包管理器&#xff09; → rvm&#xff08;ruby版本管理&#xff09; → ruby → cocoapods 安装 Homebrew Homebrew /bin/ba…

shell 循环 判断

for 循环 Shell 脚本里最简单的循环当属 for 循环。最简单的 for 循环如下所示&#xff0c;你只需将变量值依次写在 in 后面即可&#xff1a; #!/bin/bashfor num in 1 2 3 4 doecho $num done 如果要循环的内容是字母表里的连续字母或连续数字&#xff0c;那么就可以按以下语…

Matlab 使用 DH table 建立的 robot 和实际不符

机器人仿真 想借助 matlab robotics toolbox 来仿真机器人&#xff0c;但是直接输入自己的 DH table 显示出来的 robot 和实际不情况不符。 DH table 建立 robot Build Manipulator Robot Using Kinematic DH Parameters 主要使用 setFixedTransform&#xff0c;DH table 中…

智云谷再获资本市场青睐,完成数千万元A+轮融资

近日&#xff0c;深圳前海智云谷科技有限公司&#xff08;以下简称“智云谷”&#xff09;完成数千万元A轮融资&#xff0c;本轮融资由青松基金独家投资&#xff0c;多维资本担任独家融资财务顾问。本轮融资资金将用于扩大新技术研发投入、智能工厂扩产、加速产品交付&#xff…

K8S----YAML

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

Vue-20、Vue监测数组改变

1、数组调用以下方法Vue可以监测到。 arr.push(); 向数组的末尾追加元素 const array [1,2,3] const result array.push(4) // array [1,2,3,4] // result 4arr.pop(); 删除末尾的元素 const array [a, b] array.pop() // b array.pop() // a array.pop() // undefi…

【Shell编程练习】编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 猜大小 输入三个数并进行升序排序 系列文章目录编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 编写脚本测试 192.…

opencv_角点检测

文章内容 一个opencv检测角点的程序 运行效果 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;void detectCorners(M…

AI数字人短视频变现项目:打造短视频运营变现新模式

如今&#xff0c;随着科技的快速发展和人们对数字内容的增长需求&#xff0c;短视频成为了互联网用户最喜爱的娱乐方式之一。然而&#xff0c;在这个竞争激烈的市场中&#xff0c;如何为短视频创作者提供更多的变现机会成为了一个重要的问题。AI数字人短视频变现项目的出现&…

【RT-DETR改进涨点】MPDIoU、InnerMPDIoU损失函数中的No.1(包含二次创新)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

深入解析多目标优化技术:理论、实践与优化

本文深入探讨了多目标优化技术及其在机器学习和深度学习中的应用&#xff0c;特别聚焦于遗传算法的原理和实践应用。我们从多目标优化的基础概念、常见算法、以及面临的挑战入手&#xff0c;进而详细介绍遗传算法的工作原理、Python代码实现&#xff0c;以及如何应用于实际的机…

【React源码 - Diff算法】

介绍 在React学习中&#xff0c;Diff算法(协调算法)&#xff0c;想必我们并不陌生&#xff0c;简单来说就是一个对比新老节点寻找差异&#xff0c;然后找出最小的一个变化集&#xff0c;最后对这个最小变化集进行最小的DOM操作&#xff0c;本文将从源码来分析在React(17.0.2)中…

四、任意文件读取漏洞

一、介绍 解释&#xff1a;任意文件读取漏洞就其本身来说就是&#xff0c;攻击者绕过网站防御者设置的防御&#xff0c;读取到了正常使用者不应该读取到的内容。网站开发者使用不同的语言&#xff0c;任意文件读取漏洞利用方式就不同。 二、不同开发语言的不同漏洞点 1.PHP …

韶音、南卡、Oladance开放式耳机值得买吗?超强机型对比环节!

​虽然很多耳机音频爱好者最近都爱上了使用开放式耳机&#xff0c;但是作为一个7年音频数码测评的老司机&#xff0c;我还是要提醒一下&#xff0c;目前有很多的开放式耳机过分强调外观颜值设计&#xff0c;在音质体验和佩戴舒适性上的效果极差&#xff0c;还会有很多漏音、破音…

cesium设置近地天空盒 多种效果(附天空盒原图)

效果&#xff08;天空盒原图已放云盘在文章最后&#xff09;&#xff1a; 为了效果逼真设置了当达到一定高度时就恢复系统默认星空天空盒所&#xff0c;以设置了两个变量 一个是近地的天空盒子一个是当超过一定高度时用系统默认的 let currSkyBox; // 当前生效的Skybox let de…

OpenCV——图像按位运算

目录 一、算法概述1、逻辑运算2、函数解析3、用途 二、代码实现三、结果展示 OpenCV——图像按位运算由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、算法概述 1、逻辑运算 OpenCV4 针对两个图像之…

Android studio 简单登录APP设计

一、登录界面: 二、xml布局设计: <LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:layout_editor_absoluteX="…