The library has been implemented in several command-line driven programs that can be found in the GPIVTOOLS distribution. A Graphic User Interface (GPIV) is available as well, that controls all processes and its parameters and displays its results graphically in a more advanced way. GPIV has been implemented with the Gtk/GNOME libraries and resides in GPIV package. Also a python module PYGPIV has been written that allows the use of this library functionalities within Python scripts.
This library has been written in ANSI-C and has been developed on a GNU/LINUX box and should work on any UNIX-like system. The main web page can be found at: http://gpiv.sourceforge.net/
gzip -d libgpiv-*.tar.gz tar -xvf libgpiv-*.tar ./configure make make install
Some features will only work when they are enabled before the building process. An IEEE1394 (Firewire) camera, using the IIDC specifications protocol, is enabled with:
./configure --enable-cam
Triggering, using RealTime Linux (RTL) and RealTime Aplication Interface (RTAI), is enabled with:
./configure --enable-trig
Libgpiv is included in the GNU/Debian system for most of the supported (currently 11) CPU architectures and is probably also included in Linux distro's that have been derived from GNU/Debian, like Ubuntu and Knoppix. This may drasticly ease the installation, as one has not to be bothered about library dependencies etc.
Structures are named following: "GpivNameAnothername" convention, while variables and parameters using that structure are mostly named as: "name_anothername", or have been named different for clarity.
Macros start with: "GPIV_" and public functions with: "gpiv_", in general following their module name:
"img_" for image functions,
"imgproc_" for image processing,
"piv_" for image (PIV) interrogation,
"valid_" for (PIV) data validation,
"post_" for data post-processing,
and / or following their functionality, like:
"(f)read_" and "(f)write_" for in and output,
"(free_)vector_" or "(free_)matrix_" for memory (de)allocation,
(Ending on "_index" may be used for arbitrary starting and ending indices.)
In general, a function will return NULL on success or an error message will be returned if the function fails.
To create a structure (and fill it with data) is done following:
struct = gpiv_* ()
To modify the contents of an existing structure while calling a libgpiv function is done as:
gpiv_* (pointer to struct, ...)
To use the contents of an existing structure while calling a libgpiv function is done as:
gpiv_* (..., const pointer to struct, ...)
To read data from a file into a structure is done following:
struct = gpiv_read_* (FILE *fp, ...)
or if a file name is used:
struct = gpiv_fread_* (gchar *filename, ...)
Writing / storing the data of a structure to a file is done with:
gpiv_write_* (FILE *fp, ...)
or with:
gpiv_fwrite_* (gchar *filename, ...)