|
| Grabber () |
|
virtual | ~Grabber () |
| Destructor. More...
|
|
const core::ImgBase * | grab (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 > |
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...
|
|
virtual | ~Configurable () |
| virtual destructor More...
|
|
| Configurable (const Configurable &other) |
| Copy constructor. More...
|
|
Configurable & | operator= (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...
|
|
|
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...
|
|
virtual const core::ImgBase * | acquireImage () |
| main interface method, that is implemented by the actual grabber instances More...
|
|
const core::ImgBase * | adaptGrabResult (const core::ImgBase *src, core::ImgBase **dst) |
| Utility function that allows for much easier implementation of grabUD. More...
|
|
| Uncopyable () |
| Empty base constructor. More...
|
|
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...
|
|
Property & | prop (const std::string &propertyName) |
| this CAN be used e.g. to store a property value in internal property-list More...
|
|
const Property & | prop (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...
|
|
Common interface class for all grabbers.
The Grabber is ICL's common interface for image acquisition tools. A large set of Grabbers is available and wrapped by the GenericGrabber class. We strongly recommend to use the GenericGrabber class for image acquisition within applications.
The Grabber itself has a very short interface for the user: usually, a grabber is instantiated and its grab() method is called to aquire the next available image.
Desired parameters
In addition, the Grabber supports a set of so called 'desired-parameters'. These can be set to overwrite the image parameters that are used by the underlying implementation. A FileGrabber e.g. will by default return images that have the same parameter that the grabbed image file provides. However, in some situations, the user might want to adapt these parameters E.g. if the image parameters that are provided by the grabber are not suitable for an algorithm. If this is the case, the Grabber's desired parameters can be set using the Grabber::setDesired-template.
Currently, the image parameters 'core::depth', 'size' and 'core::format' can be adapted seperately by setting desired parameters. Once desired parameters are set, the can be reset to the grabber's default by calling grabber::ignoreDesired<T> where one of the types core::depth, core::format or icl::utils::Size is used as type T.
Image Undistortion
The Grabber does also provide an interface to set up image undistortion parameters. The can be estimated with ICL's distortion calibration tool. The undistortion operation is accelerated using an internal warp-table. By these means, image undistion is directly applied on the grabbed images, which lets the user then work with undistored images.
Implementing Grabbers
In order to implement a new Grabber class, some steps are necessary. First, the new Grabber needs to be implemented. This must implement the Grabber::acquireImage method, that uses an underlying image source to acquire a single new image. This can have any parameters and core::depth (usually, the image parameters are somehow related to the output of the underlying image source). If the grabber is available, one should think about adapting the grabber to inherit the icl::GrabberHandle class that adds the ability of instantiating one Grabber several times without having to handle double device accesses explicitly.
Properties
The Grabber implements the Configurable interface that is used to implement dynamically settable properties. Each Grabber must have at least the two properties 'core::format' and 'size'. These are handled in a special way by the automatically created Grabber- property-GUIs available in the ICLQt package.
Callbacks
As a very new experimental features, ICL's Grabber interface provides methods to register callback functions to the grabber that are then called automatically whenever a new image is available. This feature needs to be implemented explicitly for each grabber backend and does sometimes not even make sense. Furthermore, it' could lead to some strange behaviour of the whole application, because the internal image akquisition process is suddenly linked to the further image processing steps directly. This feature should not be used for writing applications that are scheduled by the speed of the internal image aquisition loop. Therefore, images should never be processed in the callback functions that are registred.
So far only a few grabbers provide this feature at all. If it is not provided, the registered callbacks will never be called.