grab_data_async — Asynchronous grab of images and preprocessed image data from the specified image acquisition device.
The operator grab_data_async requests asynchronously grabbed images and preprocessed image data from the image acquisition device specified by AcqHandle. By default, grab_data_async also starts the next asynchronous grab before the operator returns. More information about the behavior of a specific image acquistion device can be found in the corresponding interface documentation in the directory 'doc/html/reference/acquisition'. The desired operational mode of the image acquisition device as well as a suitable image part and additional interface-specific settings can be specified using the operators open_framegrabber and set_framegrabber_param. Depending on the current configuration of the image acquisition device, the preprocessed image data can be returned in terms of images (Image), regions (Region), XLD contours (Contours), and control data (Data).
The grab of the next image is finished by calling grab_data_async or grab_image_async. If more than MaxDelay ms have passed since the asynchronous grab was started, the asynchronously grabbed image is considered as too old and a new image is grabbed, if necessary. If a negative value is assigned to MaxDelay, this control mechanism is deactivated.
To abort the grab, the operator set_framegrabber_param with the parameter 'do_abort_grab' can be used if the specific image acquisition interface supports it. Note that as an exception from the description of the concurrent usage in multiple threads (see below) 'do_abort_grab' can also be used from another thread.
Please note that if you call the operators grab_image or grab_data after grab_data_async, the asynchronous grab started by grab_data_async is aborted and a new synchronous grab is started.
Basically an image acquisition handle AcqHandle cannot be used in multiple threads. However, possible exceptions are described in the specific reference documentation of the respective image acquisition interface. Different image acquisition handles can be used safely with different threads for each handle.
For a multithreaded application all image acquisition operators (as listed in open_framegrabber) are an own group in which info_framegrabber, open_framegrabber, close_framegrabber and close_all_framegrabbers are executed exclusively.
grab_data_async runs in parallel with all non-exclusive operators inside and outside of this group.
Grabbed image data.
Pre-processed image regions.
Pre-processed XLD contours.
Handle of the acquisition device to be used.
Maximum tolerated delay between the start of the asynchronous grab and the delivery of the image [ms].
Default value: -1.0
Suggested values: -1.0, 20.0, 33.3, 40.0, 66.6, 80.0, 99.9
Pre-processed control data.
* Select a suitable image acquisition interface name AcqName open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \ 'default','default','default',-1,-1,AcqHandle) * Grab image, segment it, and start next grab grab_data_async (Image1, Region1, Contours1, AcqHandle, -1.0, Data1) * Process data 1... * Finish asynchronous grab, segment this image, and start next grab grab_data_async (Image2, Region2, Contours2, AcqHandle, -1.0, Data2) * Process data 2... close_framegrabber(AcqHandle)
If the image acquisition device is open and supports the image acquisition via grab_data_async, the operator grab_data_async returns the value 2 (H_MSG_TRUE). Otherwise an exception is raised.
open_framegrabber, grab_image_start, set_framegrabber_param
grab_image_async, set_framegrabber_param, close_framegrabber
open_framegrabber, info_framegrabber, set_framegrabber_param