XiApiPlusOcv Offline Processing¶
XiApiPlusOcv allows to process already captured images from camera those are stored in memory or loaded from disk.
Architecture¶
Processing methods are implemented in xiAPIplus_ImageProcessing class from xiApiPlusOcv. All processing functions can be called independently to currently opened camera.
Functionality¶
Offline processing converts transport formats or RAW8 formats into XI_RAW8, XI_RAW16, XI_RGB24, XI_RGB32. It supports unpacking, debayering, Crop and Shift image processing blocks. See image data flow
Workflow¶
Typical application workflow is:- Get images from camera while storing them to some media
- Get and store camera context list for later processing
- cam.GetApiContextList()
- Create instance of xiAPIplus_ImageProcessing
- Set the camera context list to processing
- processing.SetParam XI_PRM_API_CONTEXT_LIST
- Eventually modify some parameters to tune up processing
- For each captured image:
- Push image
- Pull image
Sample¶
Source code for capturing 10 frames then processing 10 captured frames is available for download - xiApiPlusOcv_OfflineProc.cpp
Interface¶
There are the following 5 functions, which allow to control Offline Processing.
// Open processing instance
xiAPIplus_ImageProcessing processing;
// Set the parameter to processing
// Same parameters can be set like in SetParam.
// Example: XI_PRM_WB_KR for Red channel correction
processing.SetParam(const char* prm, void* val, DWORD size, XI_PRM_TYPE type);
// Set unprocessed image to processing chain
processing.PushImage(unsigned char* first_pixel);
// Get next processed image from processing chain
processing.PullImage();
processing.GetImage(xiAPIplus_Image* ret_image);
Result codes¶
Functions can throw error codes of xiAPI (0..999) combined with specific codes of Processing (1000-1999).
List of specific Image Processing codes:
Result code | Meaning |
1001 | Invalid argument detected (out of range). |
1002 | Implementation is not yet done. |
1003 | This value is not supported. |
1004 | Using of unknown parameter |
1005 | Input buffer is not allocated |
1006 | Output buffer is not allocated |
1007 | Output buffer allocation error |
1008 | There are no processors in chain |
1009 | Some requirement is not met. |
1010 | Processors chain is full. |
1011 | Processor is not initialized yet. |
1012 | Processor generates error. |
1013 | Unknown data format. |
1014 | Unknown color filter array pattern type. |
Availability¶
Offline processing is available since release V4_01_76.