The CImg Library is a small and open-source C++ toolkit for image processing

1052
225
C++

Logo

http://cimg.eu

Build

The CImg Library is a small and open-source C++ library for image processing, designed with these properties in mind:

Usefulness 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…

Genericity 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.

Portability 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,...).

Simplicity 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.

Extensibility 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 their needs.

Freedom 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.