Here, you'll learn how to compile ICL on your system.
Supported Platforms
Currently, we only support linux as plattform, however, we plan to provide mac and windows compatibility soon. We use cmake and standard C++ only. Therefore porting ICL to other platforms will be quite easy.
Optional Dependencies (Short)
In order to get the most out of ICL, you should first install all available external dependencies. Please note that all external dependencies are purely optional.
The main optional external dependecies are:
- Intel Integrated Performance Primitives Intel (IPP)
- Intel Math Kernel Library (MKL)
- Open Source Computer Vision (OpenCV)
- opensurf
- libmesasr
- libdc1394-2
- pylon-2.3.3
- OpenNI
- Qt
Please find a more detailed list of external dependencies at the bottom of this page.
Step By Step Installation of Dependencies
First, you'll have to care about installing the decencies for your ICL build.
Even though ICL has no compulsory dependencies, it is strongly recommended to install some of them to reveal ICL's full potential (E.g. you will not be able to use ICL's wonderful GUI toolkit if you build it without Qt support). A detailed step by step description for installing the dependencies is given at
Installation Guide for 3rd Party Dependencies.
Building ICL
First start with getting the current ICL Version from svn:
svn co https://opensource.cit-ec.de/svn/icl/trunk ICL
ICL uses CMake as build system. CMake is a cross platform makefile generator.
If you need a newer version of cmake refer to:
cmake.org.
Please note: Before you can build ICL with all desired functionalities, you might have to install some extra dependencies (as explained above).
We strongly recommend to use the configure script, that is placed in ICL's root directory. 'configure' always gets a single parameter that defines a configuration file name. A sample configuration file 'configure-sample-file.cfg' is also placed in ICL's root directory. The configuration file is documented and has a very simple syntax. Basically, you can simply define all build-dependent variables here. You can start the configuration process by calling
cp configure-sample-file.cfg mybuild.cfg
# edit/adapt mybuild.cfg
./configure mybuild.cfg
This will parse your configuration file and show you a summary of all parsed variables. Finally, the script calls cmake automatically and lists the dependencies that are found and used. The project can be build then by going into the build directory (which is usually ./build/release or ./build/debug) and typing
make all doc alldoc install
Alternatively, you can use cmake, ccmake or cmake-gui in order to configure the ICL-build. Here, you can manually specify all necessary variables for the build such as the installation prefix and the source directory for certain dependencies (some details are given here). However, as mentioned above, we do not recommend this, because of the huge amount of variables that can be edited there.
Experimental Windows build instructions
Step by step instructions
Optional Dependencies (Detailed)
ICL has only optional software dependencies, however some special functionalities depend compulsorily on certain 3rd party libraries. In the following, dependent functions, classes and packages are listed:
Intel Integrated Performance Primitives (Intel IPP)
| Version: | 6.x (maybe others) |
| Where: | Intel Webpage |
| Ubuntu Package: | not available |
| Proprietary: | yes |
| Used Features: |
- Most basic image pocessing functions are optionally accellerated using an Intel IPP backend
- ICLFilter:CannoOp (Canny edge detector) class is not available without Intel IPP
|
Intel Math Kernel Library (Intel MKL)
| Version: | 10.2 (maybe others) |
| Where: | Intel Webpage |
| Ubuntu Package: | not available |
| Proprietary: | yes |
| Used Features: |
- ICLUtils:big_matrix_mult_t (efficient matrix multiplication for large matrices) [fallback: IPP and C++]
|
libdc1394
| Version: | 10.2 (maybe others) |
| Where: | Sourceforge |
| Ubuntu Package: | libdc1394-2x-dev |
| Proprietary: | no |
| Used Features: |
- ICLIO:DCGrabber (FireWire Camera Support) [fallback: ICLIO:UnicapGrabber]
- "dc" plugin for ICLIO:GenericGrabber [fallback: "unicap"-plugin]
|
OpenCV
| Version: | 1.x and 2.x |
| Where: | Sourceforge |
| Ubuntu Package: | libopencv-dev |
| Proprietary: | no |
| Used Features: |
- ICLOpenCV:image converters [no fallback]
|
OpenGL
| Version: | any common |
| Where: | |
| Ubuntu Package: | libgl-dev |
| Proprietary: | no |
| Used Features: |
- Qt dependency depends also on libGL (But GL-headers are needed as well)
- The whole ICLQt-package and all GUI-applications [no fallback]
|
Qt
| Version: | 4.4 (or higher) |
| Where: | Nokia-Qt Webpage |
| Ubuntu Package: | libqt4-dev and qt4-dev-tools |
| Proprietary: | no |
| Used Features: |
- The whole ICLQt-package and all GUI-applications [no fallback]
|
Unicap
| Version: | we use 0.2.19 maybe others |
| Where: | Sourceforge |
| Ubuntu Package: | formerly: unicap |
| Proprietary: | no |
| Used Features: |
- ICLIO:UnicapGrabber (firewire and video 4 linux Support) [firewire fallback: ICLIO:DCGrabber]
- "unicap" plugin for ICLIO:GenericGrabber [firewire fallback: "dc"-plugin]
|
libMagick++
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | libgraphicsmagick++1-dev and graphicsmagick-libmagick-dev-compat |
| Proprietary: | no |
| Used Features: |
- Support for most file formats [fallback: C++ for .ppm, .pnm, .pgm, .icl, and .csv (and .gz-versions of all), libjepg for .jpg]
- No fallback support for other very common formats like .png, .giv, .bmp, ...
|
libjpeg
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | libjpeg-dev |
| Proprietary: | no |
| Used Features: |
- Support for .jpg (or .jpeg) files [fallback: libMagick++ (which maybe needs libjepg as well)]
|
libpng
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | libpng-dev |
| Proprietary: | no |
| Used Features: |
- Support for .png files [fallback: libMagick++ (which internally uses libpng as well)]
|
libz
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | libz-dev |
| Proprietary: | no |
| Used Features: |
- Zip-Compression/Decompression support for class ICLIO:File.
- Zip-Compression/Decompression support for built-in image formats .pnm, .pgm, .ppm, .csv and .icl
|
videodev.h
| Version: | from 2.4.x or 2.6.x kernel |
| Where: | |
| Ubuntu Package: | linux-headers-2.x.x.x-generic |
| Proprietary: | no |
| Used Features: |
- ICLIO:PWCGrabber (Native Support for Phillips 740 Webcams) [fallback: maybe unicap
|
SVS
| Version: | 4.2 (maybe others) |
| Where: | Videre Design |
| Ubuntu Package: | not available |
| Proprietary: | yes |
| Used Features: |
- ICLAlgorithms:SVS stereo vision support class
|
libXine
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | libxine-dev |
| Proprietary: | no |
| Used Features: |
- ICLIO:VideoGrabber class (video image source support) [no fallback]
- "video" plugin for ICLIO:GenericGrabber [no fallback]
|
XCF-Framework
| Version: | any common |
| Where: | Sourceforge |
| Ubuntu Package: | not available |
| Proprietary: | no |
| Used Features: |
- Sending and receiving images via TCP network interface [no fallback]
- ICLIO:XCFServerGrabber (RMI-based image acquisition)
- ICLIO:XCFPublisherGrabber (Subscriber for published images)
- ICLIO:XCFMemoryGrabber (image acquisition for ActiveMemory instance)
- ICLIO:GenericGrabber plugins "xcfp", "xcfs", and "xcfm"
- ICLIO:icl-xcf-publisher application
- ICLIO:MemoryListener utility class
- Global utility functions from ICLIO:XCFUtils header
|
libfreenect
| Version: | current unstable branch (10th of june 2011) |
| Where: | OpenKinect project |
| Ubuntu Package: | libfreenect-dev |
| Proprietary: | no |
| Used Features: |
- Support for Microsoft's Kinect Camera
|
pylon
| Version: | 2.3.3 (maybe others) |
| Where: | Basler |
| Ubuntu Package: | not available |
| Proprietary: | yes |
| Used Features: |
- ICLIO:PylonGrabber (GigE Camera Support)
- "pylon" plugin for ICLIO:GenericGrabber
|
OpenNI
| Version: | 1.5.4 (maybe others) |
| Where: | OpenNI |
| Ubuntu Package: | not available |
| Proprietary: | no |
| Used Features: |
- ICLIO:OpenNIGrabber (OpenNI Camera Support)
- "oni" plugin for ICLIO:GenericGrabber
|