openpose使用中的记录
官方文档
链接: https://github.com/CMU-Perceptual-Computing-Lab/openpose
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi
You can also add any of the available flags in any order. E.g., the following example runs on a video (–video {PATH}), enables face (–face) and hands (–hand), and saves the output keypoints on JSON files on disk (–write_json {PATH}).
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi --face --hand --write_json output_json_folder/
运行时会出现如下问题
F0529 10:40:10.181783 27448 syncedmem.cpp:71] Check failed: error == cudaSuccess (2 vs. 0) out of memory
*** Check failure stack trace: ***
解决办法:
OpenPoseDemo.exe --video video.avi --net_resolution 320x176
这个net_resolution具体参数值可以根据自己的需要修改,分辨率越小,画面每秒传输帧数(fps)越大,并且必须是16的倍数。
想要保存处理后的视频
1. 保存视频的图像的输出结果
首先是保存视频的图像的输出结果,以运行结果中的帧数来抽取图片, --write_images,即为存储运行结果图像的路径设置,其格式为 write_images_format ,默认为png格式。下面的命令默认将添加了骨骼的图像保存到 media_out文件夹下:
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi --write_images examples\media_out\
保存关节点信息(json文件), --write_json,即为人体骨骼姿态的关节点数据文件,文件格式为write_keypoint_format,默认为 json格式。下面的命令默认将添加了骨骼的图像保存到 media_out文件夹下:
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi --write_json examples\media_out\
不进行保存时视频处理在9.8fps左右:
write_image命令下只有2fps左右:
这种保存方法是抽帧保存,保存的结果是处理过的图片,保存图片的文件夹:
2. 可以直接添加参数保存视频
--write_video path.avi: 将处理后的图片保存为 Video.
更多参数可以参考文章:
Github 项目 - OpenPose 参数说明: https://www.aiuai.cn/aifarm713.html
使用该参数命令下,对运行帧率影响不大,仍能保持在10fps左右。
处理前后文件大小对比:
3. 修改官方的代码来实现视频的处理
参考文章:
openpose如何处理视频: https://blog.csdn.net/weixin_39518984/article/details/117879062?spm=1001.2014.3001.5501
要注意自己的版本问题,openpose源码路径发生了改变,需要参考自己的 01_body_from_image.py 文件进行改动。
今天试验了一下参考文章中的代码,我的gpu太菜了,设定了–net_resolution之后还是带不动这个程序。
我自己通过简单修改openpose-master\python\openpose_python.py代码进行视频保存,简单来说只需要在代码中添加如下参数即可:
# Custom Params (refer to include/openpose/flags.hpp for more parameters)更多参数可以参考flag.hpp文章
params = dict()
params["model_folder"] = "../models/"
params["net_resolution"] = "320x160" #根据gpu性能和需求自己设定
params["write_video"] = "output.avi" #输出avi的路径
params["video"] = "video.avi" #需要处理的avi的路径
参考文献
[1] 运行OpenposeDemo.exe保存图像或视频运行结果和关节点信息(json文件)
链接: https://blog.csdn.net/qq_43487391/article/details/103176337
[2] openpose demo运行报错Check failed: error == cudaSuccess (2 vs. 0) out of memory
链接: https://blog.csdn.net/AshleyXM/article/details/115863739
[3] openpose如何处理视频
链接: https://blog.csdn.net/weixin_39518984/article/details/117879062?spm=1001.2014.3001.5501
[4] Github 项目 - OpenPose 参数说明
链接:https://www.aiuai.cn/aifarm713.html