doc/08_release_notes.md
--write_pose renamed as --write_keypoint and it also applies to face and/or hands.--write_pose_json renamed as --write_keypoint_json and it also applies to face and/or hands.--write_pose_format renamed as --write_keypoint_format and it also applies to face and/or hands.Too many resources requested for launch.Maximum instead of Nms, since there is only 1 person / detection.Datum::scaleRatios to save the relative scale ratio when multi-scale).--camera_fps so generated video (--write_video) will use that frame rate.numberParts for Reshape, they deduce the value.--write_keypoint_json) are now saved as pose_keypoints, face_keypoints, hand_left_keypoints, and hand_right_keypoints. They all were previously saved as body_parts.--num_scales renamed as --scale_number.--hand_ and --face_ respectively.--process_real_time threw error with webcam.--body_parts. Now they are called --face_keypoints.openpose/utilities/macros.hpp moved to openpose/utilities/macros.hpp.OpenPose name.Tutorial/Wrapper VS linking errors.examples/tutorial_wrapper/.-Wsign-compare and removed in code.USE_CUDNN is no longer required; USE_CAFFE and USE_CUDA (replacing the old CPU_ONLY) are no longer required to use the library, only to build it. In addition, Boost, Caffe, and its dependencies have been removed from the OpenPose header files. Only OpenCV include and lib directories are required when building a project using OpenPose.USE_CAFFE and/or USE_CUDA are not enabled, although it will give an error saying they are required.tutorial_wrapper/ examples.-1 option for --net_resolution in order to auto-select the best possible aspect ratio given the user input.--disable_multi_thread flag in order to allow debug and/or highly reduce the latency (e.g., when using webcam in real-time).--resolution renamed as --output_resolution.core/, pose/, face/, and hand/ modules.CPU_ONLY changed by USE_CUDA to keep format.--heatmaps_scale to OpenPoseDemo, added option not to scale the heatmaps, and added custom float format to save heatmaps in floating format.--write_json as a new version of --write_keypoint_json. It includes the body part candidates (if enabled), as well as any extra information added in the future (e.g., person ID).--write_json.PoseParameters split into PoseParameters and PoseParametersRender and const parameters turned into functions for more clarity.getAverageScore and getKeypointsArea.--write_json uses less hard disk space (enters and tabs removed).PROFILER_ENABLED option (CMake/Makefile.config) and --profile_speed flag._bin by .bin.number_people_max 1 to avoid errors (as it assumes only 1 person per image).windows/ version. CMake is the only Windows version available.--write_json includes 3-D keypoints.--3d_views added to allow --image_dir and --video to load stereo images.--camera_resolution applicable to --flir_camera.--write_video) compatible with multi-camera setting. It will save all the different views concatenated.--3d_min_views to select minimum number of cameras required for 3-D reconstruction.n times faster for n cameras (multi-threaded). If the number of cameras is greater than the number of the computer threads, the speed up might not be exactly n times.no_display renamed as display, able to select between NoDisplay, Display2D, Display3D, and DisplayAll.*_keypoints by *_keypoints_2d to avoid confusion with 3d ones in --write_json output file.net/ module in order to reduce core/ number of classes and files and for future scalability.COCO model.flir_camera_index to allow running on all the cameras at once, or only on 1 camera at the time.frame_keep_distortion not to undistort the images. E.g., useful when recording images for camera calibration.Release mode by default.checkEQ from tight loop in bodyPartConnectorBase, which took a huge time exponential to the number of people.scaleKeypoints(Array<float>& keypoints, const float scale) also accepts 3D keypoints.PoseExtractor class to contain future ID and tracking algorithms as well as the current OpenPose keypoint detection algorithm.tracking and identification modules (for now disabled but available in the source code), including PersonIdExtractor and PersonTracker. PersonIdExtractor includes greedy matrix OP-LK matching.--write_keypoint_json removed (--write_json is the equivalent since version 1.2.1).WITH_OPENCV_WITH_OPENGL flag to tell whether to use OpenGL support for OpenCV.net_resolution for image_dir in CPU/OpenCL versions.--output_resolution).scaleKeypoints, other than scaleKeypoints(Array<float>& keypoints, const float scale), renamed as scaleKeypoints2d.(W)PoseExtractor renamed to (W)PoseExtractorNet to distinguish from the new PoseExtractor. Analogously with (W)FaceExtractorNet and (W)HandExtractorNet.tracking directory moved to main openpose directory.--output_resolution is not the default one.--part_candidates) are saved with the same scale than the final keypoints itself.--number_people_max) that provoked core dumped if lots of values equal to the threshold.--tracking flag).BUILD_UNITY_SUPPORT on CMake, which enables special Unity code so it can be built as a Unity plugin.flags.hpp that includes all OpenPose flags, removing the need to copy them repeatedly on each OpenPose example file.tutorial_wrapper as tutorial_api_cpp as well as new examples were added.tutorial_python as tutorial_api_python as well as new examples were added.tutorial_thread as tutorial_api_thread, focused on the multi-thread mechanism.tutorial_pose, the directory tutorial_api_cpp includes much cleaner and commented examples.--no_display flag for the examples that do not use OpenPose output.--frame_step to allow the user to select the step or gap between processed frames. E.g., --frame_step 5 would read and process frames 0, 5, 10, etc.COCO_CHALLENGE variable turned into a user configurable flag --maximize_positives.--verbose to plot the progress.--fps_max to limit the maximum processing frame rate of OpenPose (useful to display results at a maximum desired speed).--prototxt_path and --caffemodel_path to allow custom ProtoTxt and CaffeModel paths.--face_detector and --hand_detector, that enable the user to select the face/hand rectangle detector that is used for the later face/hand keypoint detection. It includes OpenCV (for face), and also allows the user to provide its own input. Flag --hand_tracking is removed and integrated into this flag too.
y checks to avoid --frame_last to be smaller than --frame_first or higher than the number of total frames.--upsampling_ratio, which controls the upsampling than OpenPose will perform to the frame before the greedy association parsing algorithm.--body (replacing --body_disable), which adds the possibility of disabling the OpenPose pose network but still running the greedy association parsing algorithm (on top of the user heatmaps, see the associated tutorial_api_cpp example).utilities/keypoints.hpp.resizeFixedAspectRatio can take already allocated memory (e.g., faster if target is an Array<T> object, no intermediate cv::Mat required).utilities/keypoints.hpp and Array to simplify keypoint post-processing.#!/bin/bash to tell the terminal that they are bash scripts.--write_video) can be generated from images (--image_dir), as long as they maintain the same resolution.--write_video_3d flag.write_video_with_audio to enable saving these output MP4 videos with audio.CameraMatrixInitial field into the XML calibration files to keep the information of the original camera extrinsic parameters when bundle adjustment is run.poseNetOutput to Datum so that the user can introduce his custom network output.errorWorker() instead of error()) lead to stopping the threads and reporting the error from the main thread, while exceptions in destructors (errorDestructor() instead of error()) are reported with std::cerr but not thrown as std::exceptions.tutorial_developer/python_2_pose_from_heatmaps.py was using 2 scales starting at -1x736, changed to 1 scale at -1x368.Forward to all net classes that automatically selects between CUDA, OpenCL, or CPU-only versions depending on the defines.--camera_fps flag by --write_video_fps, given that it was a confusing name: It did not affect the webcam FPS, but only the FPS of the output video. In addition, the default value changed from 30 to -1.--hand_tracking is a subcase of --hand_detector, so it has been removed and incorporated as --hand_detector 3.--frame_keep_distortion as --frame_undistort, which performs the opposite operation (the default value has been also changed to the opposite).--camera_parameter_folder as --camera_parameter_path because it could also take a whole XML file path rather than its parent directory.--scale_gap changed from 0.3 to 0.25.scripts/ directory. Only models/getModels.sh and the *.bat files are kept under models/ and 3rdparty/windows.TDatums used for include/openpose/wrapper/wrapper.hpp has changed from std::vector<Datum> to std::vector<std::shared_ptr<Datum>>, including the respective changes in all the worker classes. In addition, some template classes have been simplified to only take 1 template parameter for user simplicity.--write_coco_foot_json by --write_coco_json_variants in order to generalize to any COCO JSON format (i.e., hand, face, etc).scaleKeypoints2d was not working if any of the scales was 1 (e.g., fail if scaleX = 1 but scaleY != 1, or if any offset was not 0).KeepTopNPeople that could provoke segmentation fault for number_people_max > 1./ (e.g., ~/Desktop/ worked but ~/Desktop did not).--hand_alpha_pose.process() in bodyPartConnectorBase.cu to defaultNmsThreshold. This also removes any possibility of future bugs in that function for using a default NMS threshold higher than 0.15 (which was the hard-coded value used previously).removePeopleBelowThresholdsAndFillFaces is re-run with maximizePositives = true.--3d_min_views default value (-1) no longer means that all camera views are required. Instead, it will be equal to max(2, min(4, #cameras-1)). This should provide a good trade-off between recall and precision.06_face_from_image.cpp, 07_hand_from_image.cpp, and 09_keypoints_from_heatmaps working again, they stopped working in version 1.5.0 with the GPU image resize for the GUI.WrapperT::waitAndEmplace() and WrapperT::tryEmplace() improved, allowing multi-camera/3-D (TDatums of size > 1).createMultiviewTDatum() to auto-generate a TDatums for multi-camera/3-D from a single cv::Mat (that is split) and the desired camera parameter matrices.examples/tutorial_api_cpp/11_asynchronous_custom_input_multi_camera.cpp for a test example.dll files in Windows, so in Ubuntu) are still required.openpose_private directory with some internal headers that, if exported with OpenPose, would require including 3rd-party headers and static library files.Releases, subsection OpenCV - 4.2.0, Windows version.*.cpp files, their include of their analog *.hpp file has been moved to the first line of those *.cpp files to slightly speed up compiling time.include/openpose/wrapper/ to avoid std::string to cause errors for using different std DLLs.ScaleMode::ZeroToOneFixedAspect and ScaleMode::PlusMinusOneFixedAspect. Compared to ZeroToOne and PlusMinusOne, the new ones also preserve the aspect ratio of each axis.openpose_private, all 3rd-party library calls in headers, and std::string calls in include/openpose/wrapper/.dLog() as opLogIfDebug(), log() as opLog(), check() as checkBool(), and also renamed all the checkX() functions in include/openpose/utilities/check.hpp. This avoids compiling crashes when exporting OpenPose to other projects which contain other 3rd-party libraries that define functions with the same popular names with #define.output_resolution was not working with GPU resize, redirected to CPU in those cases.DOWNLOAD_SERVER variable to CMake. It specifies the link where the models and 3rd party libraries will be downloaded from.USE_MKL disabled by default in Ubuntu. Reason: Not compatible with non-intel CPUs or Ubuntu 20.--net_resolution_dynamic added to avoid out of memory errors in low GPUs (set by default to 1). It also allows maintaining the maximum possible accuracy (for big GPUs), which was the previous default until OpenPose v1.7.0.wget (Windows): From 1.19.1 to 1.20.3.advanced, deprecated, installation, etc).tutorial_add_module and tutorial_api_thread (and renamed as deprecated). They still compile, but we no longer support them.Download and/or check any OpenPose version from https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases.