在搭建完成window10下的Openpose项目之后我开始对Openpose的使用方法进行探索,在跑项目中自带的样例时可以准确的识别出图片中的,在openposedemo中设置正确的参数才能够,对面部的关键点进行保存,在识别面部之前,调试出现报错缺少动态链接库dll文件(ucrtbase.dll)就是这个组件,是因为使用getcaffe.bat下载组件的时候,少下载了部分dll文件导致的,用全的caffe文件替换掉第三方库windows\caffe\bin下的文件,以防万一再次走了一遍CMake,然后才是尝试下面的属性调试关键参数,对自己的视频和图片进行相关的处理输出测试。这样的情况和这位博主遇到的情况基本一致,至于启用源服务器的步骤别试了,没用,勾选下载完项目就跑不了了,再把两个项取消CMake重构之后,来来回回就要浪费个半小时,直接替换caffe。[link].
常用关键参数:
--video examples\media\video.avi --face --write_images examples\media\images:以图片形式转存视频面部处理后的输出.
--video examples\media\video.avi --face --write_video examples\media\test.avi:以avi形式转存视频面部处理后的输出.
--image_dir examples\media --face --write_images examples\media\images:将media文件下的图片识别并转存到images文件夹下.
--video examples\media\video.avi --face --write_json examples\media\:转存问json文件.
--render_pose 0 --face --face_render 1 --hand --hand_render 0:单独显示一个部位的关键点,1或者2都可以,0表示禁掉。
这里只显示了面部
--face: 开启 Face 关键点检测.
--hand: 开启 Hand 关键点检测
--video input.mp4: 读取 Video.
--camera 3: 读取 webcam number 3.
--image_dir path_to_images/: 运行图像路径内的图片.
--ip_camera http://iris.not.iac.es/axis-cgi/mjpg/video.cgi?resolution=320x240?x.mjpeg: 在 streamed IP camera 上运行. 参考public IP cameras 例子.
--write_video path.avi: 将处理后的图片保存为 Video.
--write_images folder_path: 将处理后的图片保存到指定路径.
--write_keypoint path/: 在指定路径输出包含人体姿态数据的 JSON, XML 或 YML 文件.
--process_real_time: 对于视频,可能在实时运行时,跳过某些视频帧.
--disable_blending: 如果 --disable_blending=True,则在很色背景上渲染估计结果(如 keypoints skeletons 和 heatmaps),而不显示原始图像. Related: part_to_show, alpha_pose, and alpha_pose.-
--part_to_show: 可视化的预测通道(Prediction channel).
--display 0: 不打开可视化显示窗口. 对于服务器部署和 OpenPose 加速很帮助.
--num_gpu 2 --num_gpu_start 1: 多 GPUs 时,设置开始的 GPU id. 默认使用所有可用的 GPUs.
--model_pose MPI: 采用的模型Model,影响 Keypoints 的数量、运行速度和精度.
--logging_level 3: Logging messages threshold, range [0,255]: 0 - 输出所有信息e & 255 - 不输出任何信息. Current messages in the range [1-4], 1 for low priority messages and 4 for important ones.
想要通过–camera 3 调用摄像头可是在输入参数的情况下USB摄像头打都打不开,那就先用video的方式完成面部识别吧。
由于使用的是windows系统,在输出为视频时格式只能用avi格式,MP4适用于MAC或Ubuntu系统。
所以只能输出成.avi格式了,显存吃的是比较满的,估计视频的分辨率(我录制的1080p的)或者net_resolution(16的倍数)再大点的话就要爆显存了,本质上是将视频的每一帧转化,再拼成视频(没有声音了),
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d339317104f42aa8126b42dbbaceacb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS0l0b2FsaQ==,size_20,color_FFFFFF,t_70,g_se,x_16
不要妄想用-video examples\media\video.avi --face --write_images examples\media\images生成图片了,处理帧率低到了0.3,非常慢不说,20秒的视频处理不到1/3就要占用200多MB的空间。不过单独处理图片的速度还是挺可观的。
至于如何使用摄像头,问了有经验的人说是需要在OpenposeDemo.cpp中解析返回值才能从camera中显示人脸的关键点,还没搞明白怎么弄,有机会想弄了再说吧。可以寻求的帮助,迷途小书童我加了他的微信他也解答了我的一些问题,感谢![link].
在之前的一篇文章中我曾安装并使用过pytorch版的openpse,没有face model,只是用来轻量化识别人体姿势(包含手势)的估计,这此使用CMake 勾选BUILD_PYTHON项目,重构生成python项目,然后在VS2017中重新生成pyopenpose启动项,这个过程中会为我们的Python项目生成动态链接库(dll文件)
缺失相应的dll文件,Release x64和Debug x64模式下重新生成情况也是缺失。
没有就算了先测试一下Python能不能调用api对图片进行姿态估计,这里用Pycharm打开了openposedemo,需要修改几个路径,功能代码不需要修改,不改的话执行相应的文件时会出现报错“找不到相应的模块”,每一个要用到的文件都要改这几处,在终端里cd到所在目录然后调用,可是最终还是出错了,缺少相应的cv2 module,什么原因还没有查清楚。
好像是在CMake中生成缺少了勾选BUILD_UNITY_SUPPORT这一项之后再试。
但是在重构之后还是缺少cv2模块,根据提示安装,并没有找到这个模块
alt+enter安装一下opencv-py试一下,总是超时下载的时候出现错误。又换了在终端输入命令下载,然后就看开了,这也是为什么我瞧不上idea和Linux这些东西的原因(下载东西简直是自虐)。host出问题了
之前用的清华的镜像,但是好像崩掉了,换其他的试试
然后又无意间看到了官方文档中
可能是没有再次把整个项目再重新编译一遍造成的。重新编译过后,放着美观,这天随便查了一下怎么Python怎么安装CV2爆红,用了下面的命令,然后老老实实的装上了。。。。(有种之前功夫白搭的感觉,也许是在用电脑的时候改了某些配置,具体的原因就不清楚了)
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
配置成功之后尝试了一下仍旧可以在Python openpose_python.py 后面添加类似 --render_pose 0 --face --face_render 1 --hand --hand_render 0;这样的参数对图像进行处理,非常的方便。