跑过很多次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/

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/

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/

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/

其他命令可以类比来进行修改。

【PS】以上内容为笔者探索openpose过程中的浅见,欢迎各位openpose爱好者指出问题和技术交流,如有不当之处,请留言给笔者。

【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息相关推荐

  1. [Winform]只允许运行一个exe,如果已运行则将窗口置前

    摘要 接着介绍项目中用到的一些方法,在winform中,打好包,有时并不允许运行多个客户端,要保证只有一个客户端运行.如果已经运行了,则弹出已运行的窗口,使其展示. 方法 判断是否有相同的进程 /// ...

  2. 【OpenPose】1.OpenPoseDemo文件的使用与解读

    OpenPose是基于深度学习的姿势估计开源框架. 它的源码托管在github上:OpenPose的链接 下载.安装可以参考官方文档,Visual Studio2017.CUDA9的安装方法可以参考国 ...

  3. 关于windows上的exe可执行程序在黑色窗口运行时候不能点击屏幕,要不然会暂定程序

    关于windows上的exe可执行程序在黑色窗口运行时候不能点击屏幕,要不然会暂定程序 2019-12-3 记录

  4. 文件或目录windows/temp/explorer.exe损坏且无法读取 请运行chkdsk工具

    昨天机房出现了三台机子,开机以后提示:文件或目录windows/temp/explorer.exe损坏且无法读取 请运行chkdsk工具,然后就是蓝屏,无法进入系统,在网上找了很多资料无法解决,重装系 ...

  5. Windows系统激活问题:在运行Microsoft Windows 非核心版本的计算机上,运行 slui.exe 0x2a 0x803f7001 以显示错误文本 解决方案

    [问题]在运行Microsoft Windows 非核心版本的计算机上,运行 slui.exe 0x2a 0x803f7001 以显示错误文本 [解决方案] 1.开机按下[Win + R],输入:re ...

  6. 错误0xC004F069在运行Microsoft Windows 非核心版本的计算机上,运行slui.exe

    前言 今天笔记本一打开,提示 错误0xC004F069在运行Microsoft Windows 非核心版本的计算机上,运行slui.exe 问题 笔记本开机提示,我们Windows系统过期,我之前买了 ...

  7. Openpose——windows编译(炒鸡简单)

    前言 最近准备看看rtpose的代码,发现已经由openpose这个项目维护着了,由于经常在windows下调试代码,所以尝试了一下如何在windows下编译openpose源码,整体来说非常简单的. ...

  8. Windows XP 下的 MySQL+Apache+PHP 运行环境架设 (顶)

    原址:http://shisanfeng.blogspot.com/search/label/%23-WAMP 一.概述 本文详细描述了如何在 Windows 系统上手工架设 PHP 服务器运行环境. ...

  9. matlab7 fig exe 阴影,Matlab 生成完全独立运行的 EXE文件的问题请教

    如何将matlab gui文件编辑成exe可执行文件 我现在用Matlab M文件写了一个计算程序,当输入一些数时,通过程序,计算出一些结果.(比如我的 程序是sum=(a+b+c)/d,即给定a,b ...

最新文章

  1. 下位机和上位机是什么意思_焊锡机是什么?焊锡机有几种分类?
  2. window7下nginx配置文件详解
  3. python配色_python语言再次解决文章配色难题
  4. 京东推荐算法精排技术实践
  5. 社交游戏Zynga之死
  6. day15-CSS内容补充之overflow
  7. 日志管理系统html,用户操作日志.html
  8. centos7 虚拟机系统磁盘扩容
  9. 正则判断手机号地区_国内外手机号码正则表达式汇总
  10. CISP 考试教材《第 6 章 知识域:信息安全评估》知识整理
  11. Java数组初始化, 冒泡排序, 查找
  12. 学生学籍管理系统_管理员登陆对学生的信息进行操作
  13. python工资自动发放_python自动化办公--协助财务自动发送工资条
  14. 奔波霸儿大战邮箱服务器
  15. 24.shell中list详解,定义list,获取List的总个数,获取list的某个元素值,将list的每个元素转换成以空格分隔的字符串,空格分隔的字符串转换成list,for循环list
  16. 美印两国程序员真的平分秋色吗?
  17. access是用来干什么的_Access是干嘛的,可以用来干什么?
  18. java运用itextpdf实现根据模板生成合同并返回网络路径,供用户查看
  19. 绿色物流-智慧仓储监控管理 3D 可视化系统
  20. 气室内温度控制系统介绍

热门文章

  1. 作用域js和java区别_js作用域理解
  2. python init函数可以外部调用么,如何从python类中调用外部函数
  3. shell 命令 链接文件 ln
  4. Python基础知识细节点总结,零基础一分钟也能掌握
  5. OA应用分析:机电企业如何选型OA系统
  6. 名企进名校精选IT人 07年毕业生就业看好
  7. 递归 图 java,《算法图解》之递归
  8. staticextension 上提供值时引发了异常_干!一张图整理了 Python 所有内置异常
  9. kotlin和java差别_Kotlin和Java的常用方法的区别总结
  10. 2021宿州市地区高考成绩排名查询,2021年宿州市所有的高中排名,宿州市高中高考成绩排名出炉...