Add examples dir and create function to dynamically load new modules
This commit is contained in:
@@ -31,14 +31,18 @@ namespace plaYUVer
|
||||
AbsoluteFrameDifference::AbsoluteFrameDifference()
|
||||
{
|
||||
/* Module Definition */
|
||||
m_iModuleAPI = MODULE_API_2;
|
||||
m_iModuleType = FRAME_PROCESSING_MODULE;
|
||||
m_pchModuleCategory = "Measurements";
|
||||
m_pchModuleName = "AbsoluteFrameDifference";
|
||||
m_pchModuleTooltip = "Measure the absolute difference between two images (Y plane), e. g., abs( Y1 - Y2 )";
|
||||
m_uiModuleRequirements = MODULE_REQUIRES_NEW_WINDOW;
|
||||
m_uiNumberOfFrames = MODULE_REQUIRES_TWO_FRAMES;
|
||||
m_iModuleAPI = MODULE_API_2; // Use API version 2 (recommended).
|
||||
// See this example for details on the functions prototype
|
||||
m_iModuleType = FRAME_PROCESSING_MODULE; // Apply module to the frames or to the whole sequence.
|
||||
m_pchModuleCategory = "Measurements"; // Category (sub-menu)
|
||||
m_pchModuleName = "AbsoluteFrameDifference"; // Name
|
||||
m_pchModuleTooltip = "Measure the absolute difference " // Description
|
||||
"between two images (Y plane), e. g., abs( Y1 - Y2 )";
|
||||
m_uiNumberOfFrames = MODULE_REQUIRES_TWO_FRAMES; // Number of Frames required (ONE_FRAME, TWO_FRAMES, THREE_FRAMES)
|
||||
m_uiModuleRequirements = MODULE_REQUIRES_NEW_WINDOW; // Module requirements (check PlaYUVerModulesIf.h).
|
||||
// Several requirements should be "or" between each others.
|
||||
m_pcFrameDifference = NULL;
|
||||
|
||||
}
|
||||
|
||||
Bool AbsoluteFrameDifference::create( std::vector<PlaYUVerFrame*> apcFrameList )
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "config.h"
|
||||
#include <functional>
|
||||
#include <cstring>
|
||||
#include <dlfcn.h>
|
||||
#include "PlaYUVerModuleFactory.h"
|
||||
#include "ModulesListHeader.h"
|
||||
|
||||
@@ -36,8 +37,8 @@ PlaYUVerModuleFactory::PlaYUVerModuleFactory()
|
||||
Register( "FilterComponentLuma", &FilterComponentLuma::Create );
|
||||
Register( "FilterComponentChromaU", &FilterComponentChromaU::Create );
|
||||
Register( "FilterComponentChromaV", &FilterComponentChromaV::Create );
|
||||
//Register( "AbsoluteFrameDifference", &AbsoluteFrameDifference::Create );
|
||||
Register( "FrameDifference", &FrameDifference::Create );
|
||||
Register( "AbsoluteFrameDifference", &AbsoluteFrameDifference::Create );
|
||||
Register( "SetChromaHalfScale", &SetChromaHalfScale::Create );
|
||||
Register( "FrameCrop", &FrameCrop::Create );
|
||||
Register( "FrameBinarization", &FrameBinarization::Create );
|
||||
@@ -48,7 +49,6 @@ PlaYUVerModuleFactory::PlaYUVerModuleFactory()
|
||||
Register( "DisparityStereoBM", &DisparityStereoBM::Create );
|
||||
Register( "DisparityStereoSGBM", &DisparityStereoSGBM::Create );
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
PlaYUVerModuleFactory::~PlaYUVerModuleFactory()
|
||||
@@ -61,6 +61,19 @@ Void PlaYUVerModuleFactory::Register( const char* moduleName, CreateModuleFn pfn
|
||||
m_FactoryMap[moduleName] = pfnCreate;
|
||||
}
|
||||
|
||||
Void PlaYUVerModuleFactory::RegisterDl( const char* dlName )
|
||||
{
|
||||
void *pHndl = dlopen( dlName, RTLD_NOW );
|
||||
if( pHndl == NULL )
|
||||
{
|
||||
std::cerr << dlerror()
|
||||
<< std::endl;
|
||||
exit( -1 );
|
||||
}
|
||||
CreateModuleFn pfnCreate = (CreateModuleFn) dlsym( pHndl, "CreateModule" );
|
||||
Register( dlName, pfnCreate );
|
||||
}
|
||||
|
||||
PlaYUVerModuleIf *PlaYUVerModuleFactory::CreateModule( const char* moduleName )
|
||||
{
|
||||
PlaYUVerModuleFactoryMap& PlaYUVerModuleFactoryMap = PlaYUVerModuleFactory::Get()->getMap();
|
||||
|
||||
@@ -42,7 +42,10 @@ class PlaYUVerModuleFactory
|
||||
{
|
||||
private:
|
||||
PlaYUVerModuleFactory();
|
||||
PlaYUVerModuleFactory &operator=( const PlaYUVerModuleFactory & ) { return *this; }
|
||||
PlaYUVerModuleFactory &operator=( const PlaYUVerModuleFactory & )
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
PlaYUVerModuleFactoryMap m_FactoryMap;
|
||||
public:
|
||||
@@ -55,8 +58,13 @@ public:
|
||||
}
|
||||
|
||||
Void Register( const char* moduleName, CreateModuleFn pfnCreate );
|
||||
Void RegisterDl( const char* dlName );
|
||||
|
||||
PlaYUVerModuleIf *CreateModule( const char *moduleName );
|
||||
PlaYUVerModuleFactoryMap& getMap(){ return m_FactoryMap; }
|
||||
PlaYUVerModuleFactoryMap& getMap()
|
||||
{
|
||||
return m_FactoryMap;
|
||||
}
|
||||
};
|
||||
|
||||
//// typedef to make it easier to set up our factory
|
||||
|
||||
Reference in New Issue
Block a user