Image Component Library (ICL)
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members

Grabber implementation to grab from files . More...

#include <FileGrabber.h>

Inheritance diagram for icl::io::FileGrabber:
icl::io::Grabber icl::utils::Uncopyable icl::utils::Configurable

Public Member Functions

 FileGrabber ()
 Create a NULL FileGrabber. More...
 
 FileGrabber (const std::string &pattern, bool buffer=false, bool ignoreDesiredParams=false)
 Create a file grabber with given pattern and parameters. More...
 
virtual ~FileGrabber ()
 Destructor. More...
 
virtual const core::ImgBaseacquireImage ()
 grab implementation More...
 
unsigned int getFileCount () const
 returns the count of files that are available More...
 
const std::string & getNextFileName () const
 returns the next to-be-grabbed file name More...
 
void bufferImages (bool omitExceptions=true)
 pre-buffers all images internally More...
 
void next ()
 internally skips the next to-be-grabbed image More...
 
void prev ()
 internally sets the next-image pointer back More...
 
void forcePluginType (const std::string &suffix)
 forces the filegrabber to use a plugin for the given suffix More...
 
- Public Member Functions inherited from icl::io::Grabber
 Grabber ()
 
virtual ~Grabber ()
 Destructor. More...
 
const core::ImgBasegrab (core::ImgBase **dst=0)
 grab function calls the Grabber-specific acquireImage-method and applies distortion if necessary More...
 
template<class T >
bool desiredUsed () const
 returns whether the desired parameter for the given type is used More...
 
template<class T >
void useDesired (const T &t)
 sets desired parameters (only available for core::depth,utils::Size and core::format) More...
 
void useDesired (core::depth d, const utils::Size &size, core::format fmt)
 sets up the grabber to use all given desired parameters More...
 
template<class T >
void ignoreDesired ()
 set the grabber to ignore the desired param of type T More...
 
void ignoreDesired ()
 sets up the grabber to ignore all desired parameters More...
 
template<class T >
getDesired () const
 returns the desired value for the given type T More...
 
virtual void registerCallback (callback cb)
 registers a callback that is called each time, a new image is available More...
 
virtual void removeAllCallbacks ()
 removes all registered image callbacks More...
 
virtual void notifyNewImageAvailable (const core::ImgBase *image)
 this function can be implemented by subclasses in order to notify, that a new image is available More...
 
void enableUndistortion (const std::string &filename)
 enables the undistorion More...
 
void enableUndistortion (const ImageUndistortion &udist)
 enables the undistortion plugin for the grabber using radial and tangential distortion parameters More...
 
void enableUndistortion (const utils::ProgArg &pa)
 enables undistortion from given programm argument. More...
 
void enableUndistortion (const core::Img32f &warpMap)
 enables undistortion for given warp map More...
 
void setUndistortionInterpolationMode (core::scalemode mode)
 sets how undistortion is interpolated (supported modes are interpolateNN and interpolateLIN) More...
 
void disableUndistortion ()
 disables distortion More...
 
bool isUndistortionEnabled () const
 returns whether distortion is currently enabled More...
 
const core::Img32fgetUndistortionWarpMap () const
 returns the internal warp map or NULL if undistortion is not enabled More...
 
- Public Member Functions inherited from icl::utils::Configurable
virtual ~Configurable ()
 virtual destructor More...
 
 Configurable (const Configurable &other)
 Copy constructor. More...
 
Configurableoperator= (const Configurable &other)
 Assignment operator. More...
 
void setConfigurableID (const std::string &ID)
 sets the ID of this configurable More...
 
const std::string & getConfigurableID () const
 returns the configurables static ID More...
 
bool isOrderedFlagSet () const
 returns whether the ordered flag is set More...
 
void deactivateProperty (const std::string &pattern)
 adds an additional deativation pattern More...
 
void deleteDeactivationPattern (const std::string &pattern)
 removed a formerly added deactivation pattern More...
 
std::vector< std::string > getPropertyListWithoutDeactivated () const
 this returns a filtered list of properties (using all filters added by deactivateProperty) More...
 
virtual void adaptProperty (const std::string &name, const std::string &newType, const std::string &newInfo, const std::string &newToolTip)
 this function can be used to adapt a specific property afterwards More...
 
void registerCallback (const Callback &cb)
 add a callback for changed properties More...
 
void removedCallback (const Callback &cb)
 removes a callback that was registered before More...
 
void syncChangesTo (Configurable *others, int num=1)
 this can be used to let this instance also apply property changes to others More...
 
virtual void setPropertyValue (const std::string &propertyName, const Any &value)
 sets a property value More...
 
virtual std::vector< std::string > getPropertyList () const
 returns a list of All properties, that can be set using setProperty More...
 
virtual bool supportsProperty (const std::string &propertyName) const
 base implementation for property check (seaches in the property list) More...
 
virtual void saveProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) const
 writes all available properties into a file More...
 
virtual void loadProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC)
 reads a camera config file from disc More...
 
virtual std::string getPropertyType (const std::string &propertyName) const
 get type of property More...
 
virtual std::string getPropertyInfo (const std::string &propertyName) const
 get information of a properties valid values More...
 
virtual Any getPropertyValue (const std::string &propertyName) const
 returns the current value of a property or a parameter More...
 
virtual std::string getPropertyToolTip (const std::string &propertyName) const
 returns the tooltip description for a given property More...
 
virtual int getPropertyVolatileness (const std::string &propertyName) const
 Returns whether this property may be changed internally. More...
 

Private Member Functions

const core::ImgBasegrabImage ()
 grab implementation called bz acquireImage(). More...
 
void addProperties ()
 adds FileGrabbers properties to Configurable. More...
 
void processPropertyChange (const utils::Configurable::Property &p)
 callback function for property changes. More...
 
void updateProperties (const core::ImgBase *img)
 updates properties values. More...
 

Private Attributes

Data * m_data
 
utils::Mutex m_propertyMutex
 
bool m_updatingProperties
 

Friends

class FileGrabberPluginMapInitializer
 for the internal plugin concept More...
 

Additional Inherited Members

- Public Types inherited from icl::io::Grabber
typedef utils::Function< void, const core::ImgBase * > callback
 new image callback type More...
 
- Public Types inherited from icl::utils::Configurable
typedef Function< void, const Property & > Callback
 Function type for changed properties. More...
 
- Static Public Member Functions inherited from icl::io::Grabber
static std::string translateSteppingRange (const utils::SteppingRange< double > &range)
 translates a SteppingRange into a string representation More...
 
static utils::SteppingRange< double > translateSteppingRange (const std::string &rangeStr)
 creates a SteppingRange out of a string representation More...
 
static std::string translateDoubleVec (const std::vector< double > &doubleVec)
 translates a vector of doubles into a string representation More...
 
static std::vector< double > translateDoubleVec (const std::string &doubleVecStr)
 creates a vector of doubles out of a string representation More...
 
static std::string translateStringVec (const std::vector< std::string > &stringVec)
 translates a vector of strings into a single string representation More...
 
static std::vector< std::string > translateStringVec (const std::string &stringVecStr)
 creates a vector of strins out of a single string representation More...
 
- Static Public Member Functions inherited from icl::utils::Configurable
static std::string create_default_ID (const std::string &prefix)
 this function can be used in subclasses to create a default ID More...
 
static Configurableget (const std::string &id)
 returns configurable by given ID More...
 
static void register_configurable_type (const std::string &classname, Function< Configurable * > creator)
 registers a configurable type More...
 
static std::vector< std::string > get_registered_configurables ()
 returns a list of all registered configurable classnames More...
 
static Configurablecreate_configurable (const std::string &classname)
 creates a configurable by given name More...
 
- Static Public Attributes inherited from icl::utils::Configurable
static const std::vector< std::string > EMPTY_VEC
 used as shortcut – just an empty vector of std::strings More...
 
- Protected Member Functions inherited from icl::io::Grabber
virtual void setDesiredFormatInternal (core::format fmt)
 internally set a desired format More...
 
virtual void setDesiredSizeInternal (const utils::Size &size)
 internally set a desired format More...
 
virtual void setDesiredDepthInternal (core::depth d)
 internally set a desired format More...
 
virtual core::format getDesiredFormatInternal () const
 returns the desired format More...
 
virtual core::depth getDesiredDepthInternal () const
 returns the desired format More...
 
virtual utils::Size getDesiredSizeInternal () const
 returns the desired format More...
 
const core::ImgBaseadaptGrabResult (const core::ImgBase *src, core::ImgBase **dst)
 Utility function that allows for much easier implementation of grabUD. More...
 
- Protected Member Functions inherited from icl::utils::Uncopyable
 Uncopyable ()
 Empty base constructor. More...
 
- Protected Member Functions inherited from icl::utils::Configurable
void addProperty (const std::string &name, const std::string &type, const std::string &info, const Any &value=Any(), const int volatileness=0, const std::string &tooltip=std::string())
 This can be used by derived classes to store supported properties in the internal list. More...
 
void addChildConfigurable (Configurable *configurable, const std::string &childPrefix="")
 This adds another configurable as child. More...
 
void removeChildConfigurable (Configurable *configurable)
 removes the given child configurable More...
 
Propertyprop (const std::string &propertyName)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (const std::string &propertyName) const
 this CAN be used e.g. to store a property value in internal property-list More...
 
 Configurable (const std::string &ID="", bool ordered=true)
 create this configurable with given ID More...
 
void call_callbacks (const std::string &propertyName, const Configurable *caller) const
 calls all registered callbacks More...
 
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callbackcallbacks
 internally managed list of callbacks More...
 

Detailed Description

Grabber implementation to grab from files .

This implementation of a file grabber class provides an internally used and expendable plugin-based interface for reading files of different types.

Example (Image Convolution)

FileGrabber g("image/image*.jpg"); //
while(true){
const core::ImgBase *image = g.grab();
...
}

Constructor & Destructor Documentation

◆ FileGrabber() [1/2]

icl::io::FileGrabber::FileGrabber ( )

Create a NULL FileGrabber.

◆ FileGrabber() [2/2]

icl::io::FileGrabber::FileGrabber ( const std::string &  pattern,
bool  buffer = false,
bool  ignoreDesiredParams = false 
)

Create a file grabber with given pattern and parameters.

Buffering

Images are buffered internally using the original image core::format i.e. most images are stored as icl8u images. At first during the grab(..) call, the images are converted automatically to the desired parameters (dependent on the desired params flag)

Parameters
patternfile pattern (e.g. images/ *.jpg ...)
bufferflag to determine, whether images should be pre-buffered. If the flag is set to true, images are buffered immediately in the constructor. If exceptions that occur during this buffering procedure are not caught internally (i.e. these exceptions are thrown). This is necessary because, the FileGrabber can become inconsistent in this case, which must be reported explicitly using an exception.
To pre-buffer images in a error-tolerant way, use the constructor without a set buffer flag and call bufferImages(false) after the FileGrabber instantiation.
ignoreDesiredParamsIn some cases, grabbed images should not be adapted to the given parameters using a converter, but the original image parameters stored in the file header should be restored. In this case the ignoreDesiredParams flag must be set to true in the constructor or by using the setIgnoreDesiredParams(bool) function. To ensure compatibility to other grabbers, the "ignore desired params" flag is set to false by default.

◆ ~FileGrabber()

virtual icl::io::FileGrabber::~FileGrabber ( )
virtual

Destructor.

Member Function Documentation

◆ acquireImage()

virtual const core::ImgBase* icl::io::FileGrabber::acquireImage ( )
virtual

grab implementation

Reimplemented from icl::io::Grabber.

◆ addProperties()

void icl::io::FileGrabber::addProperties ( )
private

adds FileGrabbers properties to Configurable.

◆ bufferImages()

void icl::io::FileGrabber::bufferImages ( bool  omitExceptions = true)

pre-buffers all images internally

This function is called automatically,if the "buffer"-flag of the constructor is set. The function internally pre-buffers all images, that are contained in the current FileList. During this procedure, some exception may occur:

  • FileNotFoundException, if a file list entry references a non-existing file
  • InvalidFileException, if no FileGrabberPlugin can be found to read files of the given core::format (determined by the file postfix e.g. ".icl" or ".ppm")
  • InvalidFileFormatException, if the FileGrabberPlugin encounters a file section with invalid contents (e.g. if a file header is corrupted, or if the file contains not enough data elements to fill an image with size determined by the file header)
  • ICLException some "not-more-specified" errors (e.g if a file could not be read due to missing permissions)

To skip these exceptions by just leaving out files that could not be read by any reason, the omitExceptions flag can be set (default). In this case, exceptions mentioned above are caught implicitly.
However if not even a single file could be read, a FileNotFoundException is thrown, to indicate, that the FileGrabber's grab/prev and next function will not work properly.
To indicate which files could be buffered, a reference to the internal file list is returned.

◆ forcePluginType()

void icl::io::FileGrabber::forcePluginType ( const std::string &  suffix)

forces the filegrabber to use a plugin for the given suffix

suffix must be something like png or csv (without a trailing .) By default, the forced plugin type string is "". In this case, the filename suffix is evaluated to determine the appropriate grabber plugin.

◆ getFileCount()

unsigned int icl::io::FileGrabber::getFileCount ( ) const

returns the count of files that are available

◆ getNextFileName()

const std::string& icl::io::FileGrabber::getNextFileName ( ) const

returns the next to-be-grabbed file name

◆ grabImage()

const core::ImgBase* icl::io::FileGrabber::grabImage ( )
private

grab implementation called bz acquireImage().

◆ next()

void icl::io::FileGrabber::next ( )

internally skips the next to-be-grabbed image

E.g. if the image directory "images/" contains 6 valid ".jpg"-files, the following code grabs all images with even indices (0,2, and 4)

FileGrabber g("images/ *.jpg");
for(int i=0;i<g.getFileCount()/2;++i){
g.grab();
g.next();
}

◆ prev()

void icl::io::FileGrabber::prev ( )

internally sets the next-image pointer back

FileGrabber g(...);
g.grab(); // grabs image A
g.grab(); // grabs image B
g.prev();
g.grab(); // again grabs image B

◆ processPropertyChange()

void icl::io::FileGrabber::processPropertyChange ( const utils::Configurable::Property p)
private

callback function for property changes.

◆ updateProperties()

void icl::io::FileGrabber::updateProperties ( const core::ImgBase img)
private

updates properties values.

Friends And Related Function Documentation

◆ FileGrabberPluginMapInitializer

friend class FileGrabberPluginMapInitializer
friend

for the internal plugin concept

Member Data Documentation

◆ m_data

Data* icl::io::FileGrabber::m_data
private

◆ m_propertyMutex

utils::Mutex icl::io::FileGrabber::m_propertyMutex
private

◆ m_updatingProperties

bool icl::io::FileGrabber::m_updatingProperties
private

The documentation for this class was generated from the following file: