CImg库是一个免费、开源的图像处理C++库,名称原意是Cool Image,正如其名,CImg是一个非常优秀、功能强大、代码简洁、使用方便的C++图像处理库。它不仅非常适合科学家、研究生做科研时使用,也适合在工业应用工程开发中使用,更适合的是,对于有志于开发简洁、高效、功能强大的图像处理库的人而言,CImg的源码是不可多得的学习和参考资料。总体而言,CImg有以下特点:
功能强大:使用CImg,可以读取和存储各种格式的图像文件,可以访问像素值,可以显示、转换及对图像进行各种滤波,在图像上画图像元素(字符串、多边形、3-d物体等),计算图像的各种统计信息,处理人机交互等等。
普适性:CImg只定义了一个模板类表征任何不超过4-d的数据集,并且元素类型可以是绝大多数C++内置类型和自定义类型(bool,char,int,float等),CImg还可以处理图像集合和图像序列。
可移植性:它完全兼容于操作系统如Windows,Unix,Linux,MacOSX,*BSD等,也完全兼容与编译器如VC++,g++,icc等,具有高度的可移植性。
轻便型:CImg非常轻便,整个库只有一个文件:cimg.h。任何C++应用程序只需要将该头文件包含进工程中即可使用该库的全部功能。它只定义了四个类(模板)和两个名称空间。该库只依赖与标准C++和STL,只在显示类部分依赖与操作系统GDI,再也不依赖任何其他的外部库。
可扩展性:CImg使用两种机制来增强其功能,这两种机制都不是必须的,只是锦上添花,可以增加一些功能。一是利用外部工具或库的功能,比如:ImageMagick,GraphicsMagick,XMedCon,FFMPEG,libpng,libjpeg,libtiff,Magick++,OpenCV,Lapack,Board,OpenEXR 或FFTW3;二是使用插件机制,可以使库的使用者自行扩展库的功能。
自由性:完全免费、开源、可以用于商业开发。
CImg 基本上提供了所有的图像处理的基本操作,但图像处理的高级操作较少,但CImg对有志于开发图像处理库的人而言,具有很大的研究价值,因为该库结构简单,代码简洁高效,功能相对已经很强大,且代码量不大,编程技巧很有大师风格。