配置环境一:
系统:Win10 professional
机器:HP-Z840-Workstation
处理器:Intel® Xeon® CPU E5-2660 v3 @ 2.60GHz × 40
显卡:Quadro K5200/PCIe/SSE2
opencv 4.0.0
cuda 10.1.0
cudnn7.5.0
VS 2017 professional
openpose :1.5.0
配置环境二:
操作系统 Windows 10 64位 professional
处理器 AMD Ryzen 5 2600X 六核
显卡 Nvidia GeForce GTX 1070 Ti ( 8 GB / 索泰 )
opencv 4.0.0
cuda 10.1.0
cudnn7.5.0
VS 2015 professional
openpose :1.5.0
经验一:安装NVIDIA驱动时,网上的教程大多是cuda8.0,实际安装时会有英文提示:may not have driver for this graphic(大致是这样),如果忽略这个提示的话就会白干一场。所以选择最新的CUDA和CUDNN.
经验二:Cmake时选择x64
经验三:VS版本太低时会有414个关于"{“和”}"的报错,原因是因为C++的版本太低导致的格式错误。解决办法,使用更高的VS2017。不必局限于VS2015。
经验四:关于curtbase.dll的异常中断,原因是显卡性能太低导致的,比如显存太小。解决办法:更换更高配置的显卡,openpose要求可用显存大于2GB。
经验五:使用Release模式,不要使用debug
openpose调参:选择程序的运行功能,比如添加手部,脸部等骨骼功能时,进到#include <openpose/flags.hpp>里
将false改为true,图片中已经改过了。
类似的脸部的可以找到
需要注意的是脸部耗源。
在这个文件里搜索write,可以找到保存结果的选项
// Result Saving
DEFINE_string(write_images, "", "Directory to write rendered frames in `write_images_format` image format.");
DEFINE_string(write_images_format, "png", "File extension and format for `write_images`, e.g., png, jpg or bmp. Check the OpenCV"
" function cv::imwrite for all compatible extensions.");
DEFINE_string(write_video, "", "Full file path to write rendered frames in motion JPEG video format. It might fail if the"
" final path does not finish in `.avi`. It internally uses cv::VideoWriter. Flag"
" `write_video_fps` controls FPS. Alternatively, the video extension can be `.mp4`,"
" resulting in a file with a much smaller size and allowing `--write_video_with_audio`."
" However, that would require: 1) Ubuntu or Mac system, 2) FFmpeg library installed"
" (`sudo apt-get install ffmpeg`), 3) the creation temporarily of a folder with the same"
" file path than the final video (without the extension) to storage the intermediate frames"
" that will later be used to generate the final MP4 video.");
DEFINE_double(write_video_fps, -1., "Frame rate for the recorded video. By default, it will try to get the input frames producer"
" frame rate (e.g., input video or webcam frame rate). If the input frames producer does not"
" have a set FPS (e.g., image_dir or webcam if OpenCV not compiled with its support), set"
" this value accordingly (e.g., to the frame rate displayed by the OpenPose GUI).");
DEFINE_bool(write_video_with_audio, false, "If the input is video and the output is so too, it will save the video with audio. It"
" requires the output video file path finishing in `.mp4` format (see `write_video` for"
" details).");
DEFINE_string(write_video_3d, "", "Analogous to `--write_video`, but applied to the 3D output.");
DEFINE_string(write_video_adam, "", "Experimental, not available yet. Analogous to `--write_video`, but applied to Adam model.");
DEFINE_string(write_json, "", "Directory to write OpenPose output in JSON format. It includes body, hand, and face pose"
" keypoints (2-D and 3-D), as well as pose candidates (if `--part_candidates` enabled).");
DEFINE_string(write_coco_json, "", "Full file path to write people pose data with JSON COCO validation format. If foot, face,"
" hands, etc. JSON is also desired (`--write_coco_json_variants`), they are saved with"
" different file name suffix.");
DEFINE_int32(write_coco_json_variants, 1, "Add 1 for body, add 2 for foot, 4 for face, and/or 8 for hands. Use 0 to use all the"
" possible candidates. E.g., 7 would mean body+foot+face COCO JSON.");
DEFINE_int32(write_coco_json_variant, 0, "Currently, this option is experimental and only makes effect on car JSON generation. It"
" selects the COCO variant for cocoJsonSaver.");
DEFINE_string(write_heatmaps, "", "Directory to write body pose heatmaps in PNG format. At least 1 `add_heatmaps_X` flag"
" must be enabled.");
DEFINE_string(write_heatmaps_format, "png", "File extension and format for `write_heatmaps`, analogous to `write_images_format`."
" For lossless compression, recommended `png` for integer `heatmaps_scale` and `float` for"
" floating values.");
DEFINE_string(write_keypoint, "", "(Deprecated, use `write_json`) Directory to write the people pose keypoint data. Set format"
" with `write_keypoint_format`.");
DEFINE_string(write_keypoint_format, "yml", "(Deprecated, use `write_json`) File extension and format for `write_keypoint`: json, xml,"
可以看到有保存相片的,保存骨骼信息的(DEFINE_string(write_json, “”, 在双引号内填写保存路径就好了,使用双斜杠隔开,例如:DEFINE_string(write_json, “C:\\Users\\jack\\Desktop”),不足之处是每张图片都会保存一个json文件,所以磁盘会变得很美丽。