./build/examples/openpose/openpose.bin在windows中调用

直接看这个更简单的方法:https://blog.csdn.net/weixin_45615730/article/details/137591825?spm=1001.2014.3001.5501

问题描述:
在跑pifuhd,需要两个输入,一个图片,一个关键点json文件。这是人家给的例子,我想跑一张自己的图。
在这里插入图片描述

看了看怎么生成json文件:cmd = “cd {0}; ./build/examples/openpose/openpose.bin --image_dir {1} --write_json {2} --render_pose 2 --face --face_render 2 --hand --hand_render 2”.format(op_dir, input_path, out_json_path)

这个./build/examples/openpose/openpose.bin我运行不了,一看就是linux里的,我是windows

所以开始查怎么在windows里搭建openpose环境,发现很多教程,都是在VS里跑的,我不需要那么多,我就想运行这行代码: ./build/examples/openpose/openpose.bin --image_dir {1} --write_json {2} --render_pose 2 --face --face_render 2 --hand --hand_render 2

而且我用的是vscode,不想再去费劲搞VS

问题解决:
前面先照着大佬们的教程做
大佬地址:windows编译openpose及在python中调用
我在这里摘抄了我做过的步骤:

基础环境安装
cuda和cudnn的部分,这个前面讲过了,不会的话,看这篇
windows 10安装CUDA和cuDNN
由于需要使用到cmake-gui,因此还需要去下载安装cmake,地址: https://cmake.org/download/,安装文件拉下来傻瓜式安装,将安装路径加入系统环境变量Path中
在这里插入图片描述
编译openpose
这里使用的源码是1.7.0版本,地址是:https://github.com/CMU-Perceptual-Computing-Lab/openpose/archive/refs/tags/v1.7.0.zip,下载后解压,在源码根目录新建个文件夹build,这个文件夹是用来存放编译生成的文件的。另外,openpose还依赖caffe和pybind11(这是为了能在python中去调用openpose的api)
caffe
pybind11
下载zip后解压,分别存放在3rdparty\caffe和3rdparty\pybind11
在这里插入图片描述
在这里插入图片描述
打开cmake-gui,填写源码位置和编译后产生的文件的位置,也就是上面刚创建的build目录
在这里插入图片描述
接下来点击下方的Configure
在这里插入图片描述
在这里插入图片描述
这个步骤,会去下载几个主要的依赖,包括opencv、caffe、caffe3rdparty,还有工程中需要用到的模型文件。
在这里插入图片描述

好,就到这一步就好了,后面让我点generate我就失败了,不过也没关系,不影响我后面的调用。如果这个configuring没能done,那就去看大佬后面写的,还有别的解决方法,我就不赘述了。反正必须搞定configuring这一步。
大佬地址:windows编译openpose及在python中调用

关键步骤:
我在上一步卡住了,停下来思考
在这个大佬的教程里:计算机视觉教程7-3:Openpose配置与实践我看到他写了windows和linux分别怎么调用。同样配置完之后:
在linux中:

# 视频
./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'

而在windows中:他写了一整段python代码,我就不摘抄了。
这个bin文件在linux中明显和exe文件差不多,那windows下肯定也能直接用exe调用。毕竟我只是需要替换./build/examples/openpose/openpose.bin这一段,不需要更多功能了。

然后,我在这个地址https://github.com/jarrodanderson/openpose-demo发现了以下内容:

# Ubuntu
./build/examples/openpose/openpose.bin --video examples/media/video.avi
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi

看来在bin目录下应该有一个和openpose.bin功能相同的OpenPoseDemo.exe,可以直接在windows里代替掉openpose.bin

回到下载openpose的地方:https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases
在这里插入图片描述
上次根据教程,我下载了source code,里面没有exe,这次下载这个binaries,里面肯定有封装好的exe文件
在这里插入图片描述
果然有这个OpenPoseDemo.exe
但是注意,刚才我们在source code里configuring的时候把模型的下载好了,这里不用在下一次了
直接把source code和binaries里的models下的几个文件夹挨个打开看一遍,缺哪个粘哪个
source code:
在这里插入图片描述
binaries:
在这里插入图片描述
那俩bat不用管,留着就行。
然后cd到binaries的根目录(下面是我的目录):

cd E:\project_python\virtualhuman\related\openpose

然后直接用bin\OpenPoseDemo.exe替换掉原本的./build/examples/openpose/openpose.bin
原本的:

./build/examples/openpose/openpose.bin --image_dir E:\project_python\virtualhuman\related\pifuhd\sample_images --write_json E:\project_python\virtualhuman\related\pifuhd\sample_images --render_pose 2 --face --face_render 2 --hand --hand_render 2

现在的:

bin\OpenPoseDemo.exe --image_dir E:\project_python\virtualhuman\related\pifuhd\sample_images --write_json E:\project_python\virtualhuman\related\pifuhd\sample_images --render_pose 2 --face --face_render 2 --hand --hand_render 2

其它地方都不用动
在这里插入图片描述
运行成功
在这里插入图片描述
keypoints.json生成好了

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

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

相关文章

【Linux】tcpdump P1 - 网络过滤选项

文章目录 选项 -D选项 -c X选项 -n选项 -s端口捕获 port选项 -w总结 tcpdump 实用程序用于捕获和分析网络流量。系统管理员可以使用它来查看实时流量或将输出保存到文件中稍后分析。本文将演示在日常使用 tcpdump时可能想要使用的几种常见选项。 选项 -D 使用-D 选项的 tcpdu…

中文域名有必要注册吗?

随着互联网的普及和全球化,中文域名作为一种新兴的网络标识,逐渐进入了公众的视野。中文域名,顾名思义,是以中文字符为主要组成部分的域名,它允许用户直接使用中文来访问网站,而不需要记忆或输入一串英文字…

并发基础面试题第一篇

1.为什么要使用并发编程 提升多核CPU的利用率:一般来说一台主机上会有多个cpu核心,我们可以创建多个线程,理论上讲操作系统可以将多个线程分配给不同的CPU执行,每个CPU执行一个线程,这样就提高了CPU的使用效率。 简单…

怎么开发一个预约小程序_一键预约新体验

预约小程序,让生活更便捷——轻松掌握未来,一键预约新体验 在快节奏的现代生活中,我们总是在不断地奔波,为了工作、为了生活,不停地忙碌着。然而,在这繁忙的生活中,我们是否曾想过如何更加高效…

邮件群发提高成功率的技巧?如何群发邮件?

邮件群发有哪些注意事项?怎么有效分析邮件群发效果? 邮件群发已经成为一种高效的信息传递手段。然而,很多人发现,尽管发送了大量的邮件,但回应率却并不理想。那么,如何才能在邮件群发中提高成功率呢&#…

【flutter启动分析】

flutter启动分析的入口: void main() {runApp(const MyApp()); } main函数会调用runapp(); void runApp(Widget app) { //生成对象给下面两个领域 //Flutter Framework ---调用到---胶水对象---》Flutter 的C++ Engine(so库这种)final WidgetsBinding binding = WidgetsF…

Oracle小机利用ZFS实现在线存储迁移

1.ZFS介绍 2004年:Sun Microsystems 开始研发 ZFS 文件系统。ZFS 最初是作为 Solaris 操作系统的一部分而开发的,旨在解决传统文件系统的一些限制和问题。 2010年:Oracle 收购了 Sun 公司,从而获得了 ZFS 文件系统的所有权和控制权…

node 中的 nextTick 和 vue 中的 nextTick 的区别

node 中的 nextTick node 中的 nextTick 是 node 自带全局的变量 process 的一个方法,process.nextTick 是一个微任务,在 node 的所有微任务中最先执行,是优先级最高的微任务。浏览器中是没有这一个方法的。 vue 中的 nextTick vue 中的 n…

只为兴趣,2024年你该学什么编程?

讲动人的故事,写懂人的代码 当你想学编程但不是特别关心找工作的时候,选哪种语言学完全取决于你自己的目标、兴趣和能找到的学习资料。一个很重要的点,别只学一种语言啊!毕竟,"门门都懂,样样皆通",每种编程语言都有自己的优点和适合的用途,多学几种可以让你的…

鸿蒙开发 一 (二)、熟悉鸿蒙之剑 ArkTS

ArkTS是HarmonyOS主要应用开发语言,以后也别在弄那个 java 和鸿蒙的混合版了, 没必要浪费时间, 一步到位, 学新的吧。 简介 ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保…

网络工程师(强化训练)-网络互联与互联网

网络工程师 以下关于OSPF路由协议的描述中,错误的是向整个网络中每一个路由器发送链路代价信息。相比于TCP,UDP的优势为开销较小。以太网可以传送最大的TCP段为1480字节。IP数据报经过MTU较小的网络时需要分片。假设一个大小为1500字节的报文分为2个较小…

【如何应用OpenCV对图像进行二值化】

使用OpenCV进行图像二值化是一个常见的图像处理任务。以下是一个简单的步骤说明,以及相应的Python代码示例。 步骤说明: 读取图像:首先,使用OpenCV的imread函数读取图像。灰度化:将彩色图像转换为灰度图像&#xff0…

LeetCode 1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心)

【LetMeFly】1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心) 力扣题目链接:https://leetcode.cn/problems/maximum-binary-string-after-change/ 给你一个二进制字符串 binary ,它仅有 0 或者 1 组…

Day 20 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二叉…

【鸿蒙千帆起】《开心消消乐》完成鸿蒙原生应用开发,创新多端联动用户体验

《开心消消乐》已经完成鸿蒙原生应用开发,乐元素成为率先完成鸿蒙原生应用开发的20游戏厂商之一。作为一款经典游戏,《开心消消乐》已经拥有8亿玩家,加入鸿蒙原生应用生态,将为其带来更优的游戏性能和更多创新体验。自9月25日华为…

中国500米分辨率月最大EVI数据集

增强型植被指数(EVI)是在归一化植被指数(NDVI)改善出来的,根据大气校正所包含的影像因子大气分子、气溶胶、薄云、水汽和臭氧等因素进行全面的大气校正,EVI大气校正分三步,第一步是去云处理。第…

结构体和结构体指针的区别

1.定义区别 结构体的定义如下: struct 结构体名 {数据类型 成员变量名1;数据类型 成员变量名2;// 可以有更多的成员变量 };例如,定义一个表示学生的结构体: struct Student {int id;char name[20];int age; };上述定义了一个名为Student的…

Glide系列-自定义ModuleLoader

在当今快速发展的移动应用领域,图片的高效加载和显示对于提供流畅用户体验至关重要。Glide作为一款强大的图片加载库,已经成为Android开发者的首选工具之一。但是,你有没有遇到过Glide默认不支持的模型类型,或者需要对图片加载过程…

【SQL Sever】3. 用户管理 / 权限管理

1. 创建登录名/用户/角色 在SQL Server中,创建用户通常涉及几个步骤。 首先,你需要创建一个登录名,然后你可以基于这个登录名在数据库中创建一个用户。 以下是如何做到这一点的步骤和相应的SQL语句: 创建登录名 首先&#xff0c…

什么是尾调用优化

尾调用优化(Tail Call Optimization,TCO)是一种编译器或解释器的优化技术,旨在减少函数调用的内存消耗。尾调用发生在一个函数的最后一个操作是调用另一个函数时。在这种情况下,如果编译器能够优化,它可以将…