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.
-
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.
-
-
Copy the design from
pose/WPoseExtractor
.
-
-
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.
-
-
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_
.