The CImg Library is a small, open-source, and modern C++ toolkit for image processing, designed with these properties in mind:
CImg defines classes and methods to manage images in your own C++ code. You can use CImg to load/save various file formats, access pixel values, display/transform/filter images, draw primitives (text, faces, curves, 3d objects, ...), compute statistics, manage user interactions on images, and so on...
CImg defines a single image class able to represent datasets having up to 4-dimensions (from 1d scalar signals to 3d hyperspectral volumetric images), with template pixel types (bool,char,int,float,...
). It also handles image collections and sequences.
CImg is self-contained, thread-safe and highly portable. It fully works on different operating systems (Unix,Windows,MacOS X,*BSD,...
) and is compatible with various C++ compilers (Visual C++,g++,clang++,icc,...
).
CImg is lightweight. It is made of a single header file CImg.h
that must be included in your C++ source. It defines only four different classes, encapsulated in the namespace cimg_library
. It can be compiled using a minimal set of standard C++ and system libraries only. No need for exotic or complex dependencies.
Although not mandatory, CImg can use functionalities of external tools/libraries such as Board, FFMPEG, FFTW3, GraphicsMagick, ImageMagick, Lapack, libcurl, libjpeg, libpng, libtiff, Magick++, OpenEXR, OpenCV, OpenMP or XMedCon. Moreover, a simple plug-in mechanism allows any user to directly enhance the library capabilities according to his needs.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (compatible with the GNU GPL) licenses. It can be used in commercial applications.
CImg stands for Cool Image : It is easy to use, efficient and is intended to be a very pleasant toolbox to design image processing algorithms in C++. Due to its generic conception, it can cover a wide range of image processing applications.