In order to add a new module, these are the recommended steps in order to develop it:
- Create a folder with its name in the
experimental/
module, e.g.experimental/hair/
. - Implement all the functionality in one
Worker
(i.e. inherit fromWorker
and implement all the functionality on that class).- The first letter of the class name should be
W
(e.g.WHairExtractor
). - To initially simplify development:
- Initialize the Worker class with the specific std::shared_ptr<std::vectorop::Datum> instead of directly using a template class (following the
examples/tutorial_wrapper
synchronous examples). - Use the whole op::Datum as unique argument of your auxiliary functions.
- Use the OpenPose Wrapper in ThreadManagerMode::SingleThread mode (e.g. it allows you to directly use cv::imshow).
- If you are using your own custom Caffe -> initially change the Caffe for your version. It should directly work.
- Initialize the Worker class with the specific std::shared_ptr<std::vectorop::Datum> instead of directly using a template class (following the
- Copy the design from
pose/WPoseExtractor
.
- The first letter of the class name should be
- To test it:
- Add the functionality to
Wrapper
, use theexperimental
namespace for the new Struct (e.g.experimental::HairStruct
) that theWrapper
will use. Do not change any function name fromWrapper
, just add a newconfigure
, with the newHairStruct
or modify the existing ones without changing their names. - Add a demo (e.g.
examples/openpose/rthair.cpp
) to test it.
- Add the functionality to
- Split the
Worker
into as many Workers as required. - If the Workers need extra data from
Datum
, simply add intoDatum
the new variables required (without removing/modifying any previous variables!). - Read also the release steps before starting this developping phase.
In order to release the new module:
- Move the functionality of each
Worker
class to the non-template class (e.g.WHairExtractor
toHairExtractor
).WHairExtractor
will simply wrapHairExtractor
. This will reduce compiling time for the user. See examples from other modules. - If you are using a custom Caffe version, move the custom code into the OpenPose library and change back Caffe to the default (most updated) version.
- Move the module from
experimental/hair/
tohair/
. - Remove
experimental
namespaces (fromWrapper
andhair
) and turn Workers into template classes. - Add a demo in
examples/openpose/
and tutorial examples inexamples/tutorial_
.