Sample programs
Sample programs for eGrabber are provided in a dedicated package named egrabber-<OS>-sample-programs-<MA.MI.RE.BU>.<EXT> where <OS> is the operating system (linux, macos, or win) and <MA.MI.RE.BU> is the version number of the package.
These sample programs will use Coaxlink series by default.
To use them with Grablink:
● | either define EURESYS_DEFAULT_GENTL_PRODUCER=grablink in your environment; |
● | or pass Grablink() to the EGenTL constructor. |
Similarly, to use Gigelink (which requires a license1:
● | either define EURESYS_DEFAULT_GENTL_PRODUCER=gigelink in your environment; |
● | or pass Gigelink() to the EGenTL constructor. |
Sample program | Description | Language | OS |
---|---|---|---|
cpp/egrabber | Collection of code snippets for eGrabber | C++ | Windows, Linux, macOS |
cpp/live
|
Win32 application showing image acquisition and display | C++ | Windows |
cpp/egrabber-mfc
|
MFC application showing image acquisition and display | C++ | Windows |
cpp/sdl2-live | SDL2 application showing image acquisition and display | Linux, macOS | |
cpp/amdDirectGMA
|
OpenGL application showing image acquisition, direct transfer to AMD GPU memory, and display | C++ | Windows |
cpp/nvidia/egrabber-cuda | OpenGL console application showing image acquisition with eGrabber and processing with CUDA (on Nvidia GPU) | C++ | Windows, Linux |
cpp/ffcWizard
|
Console application showing how to compute coefficients for the Coaxlink FFC (flat-field correction) | C++ | Windows, Linux, macOS |
cpp/exif
|
Collection of sample programs showing how to use the Coaxlink Quad CXP-12 JPEG and how to embed metadata in EXIF files | C++ | Windows, Linux, macOS |
cpp/GrablinkSerialCommunication | Simple application demonstrating Camera Link serial communication through the clseregl library on a Grablink Duo board | C++ | Windows |
cs/egrabber
|
Console application showing how to use eGrabber and callbacks in C# | C# | Windows |
cs/grabn
|
Console application showing image acquisition | C# | Windows |
cs/grabn.NET | .NET console application showing image acquisition | C# | Windows |
cs/live
|
Windows Forms application showing image acquisition and display | C# | Windows |
cs/egrabber-wpf
|
WPF application showing image acquisition and display | C# | Windows |
cs/recorder | Collection of eGrabber Recorder C# sample programs for eGrabber Recorder | ||
cs/GrablinkSerialCommunication | Simple application demonstrating Camera Link serial communication through the clseregl library on a Grablink Duo board | C# | Windows |
python/sample* | Collection of eGrabber Python sample programs | Python | Windows, Linux, macOS |
python/recorder/sample* | Collection of eGrabber Recorder Python sample programs | Python | Windows |
python/live* | Collection of extra eGrabber Python sample programs showing how to process acquired data with numpy, opencv, Pillow, etc. | Python | Windows, Linux, macOS |
vb/grabn
|
Console application showing image acquisition | VB.NET | Windows |
vb/live
|
Windows Forms application showing image acquisition and display | VB.NET | Windows |
Additional files | Description | Language | OS |
---|---|---|---|
tools/stripeGeometry.py | Python script showing the effect of the image transfer settings: StripeArrangement, StripeHeight, StripePitch, StripeOffset, and BlockHeight | Python | Windows, Linux, macOS |
LICENSE | License text for eGrabber sample programs | All | Windows, Linux, macOS |
cpp/egrabber contains the following code snippets:
Snippet | Description |
---|---|
100-grabn
|
Simple Grab N frames using ScopedBuffer class |
101-singleframe | Single frame grabbing using ScopedBuffer class |
102-action-grab | Single frame triggered by an action |
105-area-scan-grabn | Set image size and Grab N frames (area-scan) |
106-line-scan-grabn | Set image size and Grab N frames (line-scan) |
110-get-string-list
|
Basic usage of EGrabber method getStringList |
120-converter
|
Measure FormatConverter speed |
130-using-buffer
|
Simple Grab N frames using Buffer class |
140-genapi-command
|
Queries on GenApi commands |
150-discover | Discover and create eGrabbers or cameras with EGrabberDiscovery |
200-grabn-callbacks
|
Grab N frames and get DataStream events with callbacks |
201-grabn-pop-oneof | Grab N frames and get DataStream events using pop(OneOf<>) |
210-show-all-grabbers
|
Show available grabbers |
211-show-all-grabbers-ro
|
Show available grabbers (devices are opened with DEVICE_ACCESS_READONLY) |
212-create-all-grabbers
|
Create available grabbers |
213-egrabbers
|
Use available grabbers with EGrabbers |
220-get-announced-handles
|
Get info and handles of announced buffers |
221-queue-buffer-ranges
|
Create and use 2 sets of buffers configured differently |
230-script-vars
|
Pass data between native code and Euresys script |
231-script-var
|
Create and use virtual features from native code and Euresys scripts |
240-user-memory
|
Grab into user allocated buffer |
250-using-lut
|
Configure and enable the LUT processor |
260-egrabber-recorder | Write/Read buffers to/from a Recorder container |
261-recorder-parameters | Show Recorder parameters |
300-events-mt-cic
|
CIC events on EGrabber Multi-Thread Configuration |
301-events-st-all
|
All events on EGrabber Single-Thread Configuration |
302-cxp-connector-detection
|
Show CoaXPress events related to connection and device discovery |
310-high-frame-rate | Grab in high frame rate mode for 10 seconds |
311-high-frame-rate | Process images as soon as available in high frame rate mode for 10 seconds |
312-part-timestamps | Show timestamp of each buffer part in HFR mode |
320-cl-serial-cli.cpp | Command line interface for serial communication with a Camera Link camera |
500-grabn-cuda-process
|
Grab N frames and process them with cuda operations |
501-all-grabbers-cuda-process
|
Using all available grabbers to grab N frames and process them with cuda operation |
502-grabn-cuda-copy-and-process | Grab N frames, copy the buffers to the cuda device and process them with cuda operations |
503-grabn-cuda-rdma-process | Grab N frames in the GPU memory with RDMA and process them with cuda operations |
600-thread-start-stop-callbacks | Perform specific operations on a callback thread when it starts/stops |
610-line-scan-array
|
Array of (contiguous) buffers on Line-Scan with EGrabber Single-Thread |
620-multiple-camera
|
Acquire data from all cameras |
630-sublink
|
Merge buffers from 2 Sub-Link grabbers on the same PC |
640-mitsubishi-kd6r807cx
|
Merge (with memcpy operations) buffers from 2 grabbers connected to one Mitsubishi KD6R807CX |
641-mitsubishi-kd6r807cx
|
Merge (with DMA) buffers from 2 grabbers connected to one Mitsubishi KD6R807CX |
650-multistream
|
Acquire data from 4 data streams on the same device (on the "1-camera, 4-data-stream" firmware variant of Coaxlink Quad G3) |
660-phantom
|
Merge buffers from available grabbers connected to phantom streamer 16 CXP6 |
cpp/exif
contains the following samples:
Sample | Description |
---|---|
100-jpeg-exif
|
Acquire data from 4 JPEG encoded data streams and produce EXIF files |
200-jpeg-preview-exif
|
Acquire data from 4 Preview and 4 JPEG encoded data streams and produce EXIF files with thumbnails |
eGrabber Python sample programs
Sample | Description |
---|---|
live-capture-opencv | Acquire and convert frames to RGB8 to produce an avi file with opencv and numpy |
live-numpy-opencv | Create numpy arrays from acquired Mono8 data, transpose arrays and use opencv to show images |
live | Image acquisition and display |
live-tkinter-pillow | Simple tkinter application showing acquired data processed by a Pillow contour filter |
sample100 | Simple Grab N frames using ScopedBuffer class |
sample120 | Python version of the C++ 120-converter eGrabber sample program |
sample130 | Simple Grab N frames with manual buffer management |
sample140 | Queries on GenApi commands |
sample150 | Discover and create eGrabbers or cameras with EGrabberDiscovery |
sample200 | Grab N frames and get DataStream events with callbacks |
sample201 | Grab N frames and get DataStream events with pop_one_of |
sample210 | Show available grabbers |
sample240 | Grab into user allocated buffer |
sample310 | Grab in high frame rate mode for 10 seconds |
eGrabber Recorder Python sample programs
Sample | Description |
---|---|
sample260 | sample260 Write/Read buffers to/from a Recorder container |
sample261 | Show Recorder parameters |
sample262 | Export images from the container created by sample260.py to an MKV file, and then use opencv to read the MKV file and display the images |
sample360 | Async-Write to a Recorder container using EGrabber callback |
eGrabber RecorderC# sample programs
Sample | Description |
---|---|
260-egrabber-recorder | Write/Read buffers to/from a Recorder container |
261-recorder-parameters | Show Recorder parameters |