【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息
跑过很多次openposeDemo了,不管是video、Webcam还是Images,都是运行结果一闪而过,然而我们所要的肯定不是只看一下运行结果就完事的,很多情况下,我们都希望能够把运行结果的图像、关节点坐标信息、人数统计等数据信息全部保存下来,以便于我们对openpose进行更加深入的分析和应用,那么这篇博客的作用就是告诉大家如何把这些运行结果保存下来。
openposeDemo的程序运行结果的保存,其实有两种方式,一种便是直接使用官方Github的openpose demo的1.0.1的发布版本的命令行操作,另一种就是修改openposeDemo的源代码的方式,使得编译发布版本的程序直接可以保存运行结果。下面,笔者就两种方式做详细介绍。
一、命令行模式
根据官方Github quick-start文档,Windows上运行openposeDemo 1.0.1版本的程序如下,
根据以上命令,如果需要保存运行图片结果,亦或是保存关节点(特征点)的坐标信息,亦或是保存人数统计的信息内容,可运行如下命令
【PS】下述命令仅提供Images的命令,其他Video和Webcam的保存方式与Images的一致。
在examples/文件夹下创建与media文件夹并列的文件夹media_out,然后运行如下程序
保存图像
bin/OpenPose.exe --image_dir examples/media/ --write_images examples/media_out/
- 1
- 1
write_images:源代码给出的解释为”Directory to write rendered frames in write_images_format
image format.examples”,即为存储运行结果图像的路径设置,其格式为 write_images_format
,默认为png
格式。上面的命令默认将添加了骨骼的图像保存到 media_out
文件夹下。
保存json文件
bin/OpenPose.exe --image_dir examples/media/ --write_keypoint_json examples/media_out/
- 1
- 1
write_keypoint_json:源代码给出的解释为”Directory to write the people body pose keypoint data. Set format with write_keypoint_format
“,即为人体骨骼姿态的关节点数据文件,文件格式为write_keypoint_format
,默认为 json
格式。上面的命令默认将添加了骨骼的图像保存到 media_out
文件夹下。
下图表示一张人体骨骼关键点的json文件,笔者没有运行face和hand模型,因而只显示了pose关节点的数据信息。
“pose_keypoints”即为当前图像中人体18个关节点的数据信息,其具体的含义还有待深入的了解,这里笔者就不做深究了,至于如何看出是18个关节点,其实我们随便看一遍这个数据集,马上就能看出大概3个数据为一组,即表示一个关节点,刚好有18组信息。
【2017/8/6】看过官方Github提供的文档output.md才知道,原来一个关节点信息包括(x,y,score)
三个信息,x和y即为图像中的坐标信息,取值范围为(0,image.size),而score则表示预测评分,做了归一化处理,取值范围(0,1),越接近1值表示预测的越准确,其关节点的还原度就越高,同时姿态的还原度也就越高。
以上关节点的坐标信息可以参考官方文档给出的模型,如下,进行研究
【PS】该模型提供的是COCO 18个关节点的骨骼模型。
保存yml文件
bin/OpenPose.exe --image_dir examples/media/ --write_keypoint examples/media_out/
- 1
- 1
write_keypoint:源代码给出的解释为”File extension and format for write_keypoint
: json, xml, yaml & yml. Json not available for OpenCV < 3.0, use write_keypoint_json
instead”,即为人体骨骼姿态的关节点数据文件,文件格式为 write_keypoint
,默认为 yml
格式。上面的命令默认将添加了骨骼的图像保存到 media_out
文件夹下。
【PS】注意opencv低于3.0版本的,不支持json格式的文本输出,当然,官方提供的Opencv是高于3.0的,大家一开始学习为了避免问题,尽可能使用官配版本。
下图表示一张人体骨骼关键点的yml文件,笔者没有运行face和hand模型,因而只显示了pose关节点的数据信息。
使用同样的办法可以生成xml文件,至于yml文件中具体的含义,这里笔者也不再详细介绍,因为笔者暂时也还没弄明白,欢迎已经弄清楚的小伙伴给笔者留言。
【2017/8/6】
关于yml文件
“%YAML:1.0”表示当前yaml使用版本为1.0;
“pose_0”表示当前处理图像的全部姿态信息,包括单人情况和多人情况;
“sizes”表示当前”data”为大小是1*18*3的矩阵,其中,”1”表示统计到人的数量,”18”表示使用的model应该检测到的关节点的数量,笔者使用的是COCO,故而是18,3表示一个关节点的坐标和score信息。
“dt”这个东东笔者还没弄清楚,怀疑是数据的格式为float,还有待验证。
“data”中具体数据的含义暂时还没搞懂。
二、源码修改编译发布模式
源码修改更是方便,现在让我们来看看openposeDemo的源代码内容,
其中有这样一段,这里我看明确的看到注释的“//Result Saving”信息,以上9个值字段便是为运行结果进行保存所准备的,具体的含义,笔者在这里就不再胡乱的翻译了,大家可以看右侧的字段解释,修改自己想要保存的结果以及保存结果的路径后,就可以执行openposeDemo的程序,生成可执行文件啦,其生成的内容参见命令行模式方案。
三、题外话—关于Ubuntu
笔者在帮助网友在Ubuntu上保存运行结果的过程中发现,其实Ubuntu和Windows上的命令是一致的,只要吧可执行的命令换成Ubuntu的,如下所示
./build/examples/openpose/openpose.bin --image_dir examples/media/ --write_images examples/media_out/
- 1
- 1
其他命令可以类比来进行修改。
【PS】以上内容为笔者探索openpose过程中的浅见,欢迎各位openpose爱好者指出问题和技术交流,如有不当之处,请留言给笔者。
【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息的更多相关文章
- Windows 下 把EXE 程序变成服务运行
1. 下载 instsrv.exe 和 srvany.exe 我下载的地址 [点击打开链接][https://www.cr173.com/soft/64394.html] 2. cmd cd ...
- [Winform]只允许运行一个exe,如果已运行则将窗口置前
摘要 接着介绍项目中用到的一些方法,在winform中,打好包,有时并不允许运行多个客户端,要保证只有一个客户端运行.如果已经运行了,则弹出已运行的窗口,使其展示. 方法 判断是否有相同的进程 /// ...
- windows下postgresql安装失败解决方法:无法运行getlocales.exe
今天要安装postgresql但是安装的时候出现错误 Unknown error while running C:\Users\jinjin\AppData\Local\Temp\postgresql ...
- python+appium 【已解决】真机运行appium报错“WebDriverException: Message: A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c.......详见内文
问题报错提示: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. ...
- windows 中 到底是用的哪个java.exe??? 删除了PATH变量的Java设置还是可以运行java.exe windows/system32
到底是用的哪个java.exe??? 删除了PATH变量的Java设置还是可以运行java.exe JavaWindowsCC++C# 当电脑里面有多个jdk或是jre时,在cmd里面到底是用的哪个 ...
- 当您在 64 位 Windows 上运行 Regsvr32.exe 时出现错误信息
尝试运行 Regsvr32.exe 注册在 64 位版本的 Windows 32 位动态链接库 (DLL) 时您会收到以下错误消息: 若要解决此问题,从 %SystemRoot%\Syswow64 文 ...
- Windows系统中,循环运行.bat/.exe等文件
一.创建循环运行的run-everySecond.vbs文件[双击次文件即可启动运行] dim a set a=CreateObject("Wscript.Shell") Do # ...
- Windows下将nginx安装为服务运行
今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...
- 在windows中使用labelimg工具搭建图像标注小环境
文章分成两个部分,第一部分,labelimg工具的安装:第二部分,labelimg工具的使用方法. 第一部分:工具安装 方法一:直接使用网上编译好的Labelimg可执行文件(12.6M),双击执行即 ...
随机推荐
- 笔记本设置 2K 显示屏 Intel HD Graphics 3000
收了一台 32英寸的显示器,接到笔记 本只有 1920x1080,心想没得救了,要换笔记本才能用了. 在网上找了一圈,找到一篇说 Intel HD Graphics 3000 可以支持到 2560x1 ...
- tomcat源码阅读之StandardContext
Context实例表示一个具体的web应用程序,其中包含一个或者多个Wrapper实例,每个Wrapper表示一个具体的servlet定义.StandardContext类是Context接口的标准实 ...
- hadoop之 map个数控制
hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数.但是通过这种方式设置map的个数,并不是每次都有效的.原因是mapred.map. ...
- yarn 制作 npm 包
yarn publish yarn info [package_name]
- C#获取本机IP地址(ipv4)
获取本机所有IP地址: 这些地址是包含所有网卡(虚拟网卡)的ipv4和ipv6地址. string name = Dns.GetHostName(); IPAddress[] ipadrlist = ...
- 学习笔记之C# / .NET Core 2.0
C# 教程 | 菜鸟教程 http://www.runoob.com/csharp/csharp-tutorial.html .NET API Browser | Microsoft Docs htt ...
- 廖雪峰Java1-2程序基础-7布尔运算符
布尔运算符 关系运算符:>, >=, <, <=, ==,!= 与运算 && 或运算 | 非运算 ! int n = 5; boolean t = n > ...
- 小甲鱼-013元组tuple:上了枷锁的列表
1.创建和访问一个元组 1.1创建元组 元组的标志性符号是 , tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) #定义单个元素的元组,要加 , tuple2 = (1 ...
- VLC在web系统中应用(x-vlc-plugin 即如何把VLC嵌入HTML中)第一篇
VLC毫无疑问是优秀的一款播放软件,子B/S机构的web项目中,如果能把它嵌入页面,做页面预览或者其他,是非常棒的. 第一步:下载VLC安装程序:(推荐1.0.3或者是1.0.5版本,比较稳定) ht ...
- Ubuntu登录系统失败的解决方案
问题一: 只能用guest用户登录下,如何切换成普通用户登录 解决: 重启,同时按Esc建,直至进入到恢复模式下: 选择第一项,进入: 找到ro...那一行,把ro之后的删除,并把ro修改为rw si ...