CImg 是一个用C++编写的开源数字图像处理库。
 
作者介绍
 
作者David Tschumperlé, 之前是法国La Rochelle大学的一名教授,现受雇于CNRS 图像组。据说作者从1998年写博士论文时就开始写这个库。作者主页:http://www.greyc.ensicaen.fr/~dtschump/ ,里面有更多关于作者本人的消息。
 
库的特点
 
这个库与一般的类库最大的不同点在于,不像其他的图像处理类库,CImg所有的代码都包含在一个文件中(CImg.h)。库的设计使用了C++模板技术,支持多种数据类型,且库的设计机器简单明了。库包含了这几个模块:首先是CImg类,这是库的主体,基本上基于图像的操作都在这个类里实现了。第二个是CImgDisplay类,该类用于显示处理后的图像。我们在用c++处理图像时,总是要花好多功夫在图像的显示上,CImgDisplay的设计就是为解决这个问题而写的。有了它,我们可以像用Matlab一样方便的显示图像。第三个重要的类是CImgList该类主要为处理序列图像。
 
该库还有一个特点是可移植性,同时支持Windows和linux,FreeBSD等等。
 
该库支持多种图像格式的读取与保存,不过个人认为,除了bmp文件外,读取其他文件时都是先用ImageMagic的convert程序转换格式在读取,所以速度很慢。读取bmp文件很快。
 
如何使用
 
在该库发布的下载文件中包含了很多演示程序。要使用它,首先将下载下来的CImg.h文件拷贝到你的编译器搜索的include文件夹中,然后在源代码写上:
 

#include "CImg.h"
using namespace cimg_library;

 
就这么简单,你就可以使用所有的库函数。

下面是作者给的一个例子:

#include "CImg.h"
  using namespace cimg_library;

int main() {
    CImg<unsigned char> image("lena.jpg"), visu(500,400,1,3,0);
    const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 };
    image.blur(2.5);
    CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile");
    while (!main_disp.is_closed && !draw_disp.is_closed) {
      main_disp.wait();
      if (main_disp.button && main_disp.mouse_y>=0) {
        const int y = main_disp.mouse_y;
        visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.dimx()-1,y,0,0),red,1,255,0);
        visu.draw_graph(image.get_crop(0,y,0,1,image.dimx()-1,y,0,1),green,1,255,0);
        visu.draw_graph(image.get_crop(0,y,0,2,image.dimx()-1,y,0,2),blue,1,255,0).display(draw_disp);
        }
      }
    return 0;
  }

你可以直接将上面的源代码保存到一个.cpp文件然后编译查看效果。当然,在项目所在文件夹中必须包含有图片lena.jpg。

技术支持

该库有非常详细的文档说明随源代码一起发布。http://cimg.sourceforge.net/index.shtml 这是sourceforge上该项目的主页,有论坛,我觉得作者非常认真负责,经常在上面为网友解答问题,详细细致。

图像处理库CImg的更多相关文章

  1. 开源库CImg 数据格式存储

    CImg为开源图像处理库,仅有一个头文件CImg.h便包含了对图像的所有处理函数,函数操作简单,编程方便,但国内使用者较少 其homepage:http://cimg.sourceforge.net/ ...

  2. zxing--条码图像处理库

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.   该项目可实现的条形码 ...

  3. Python图像处理库:Pillow 初级教程

    Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...

  4. windows下Python 3.x图形图像处理库PIL的安装

    图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴.PIL (Python Imaging Library)是 Python 中最常用的图像处理库,目前 ...

  5. Python图像处理库PIL中图像格式转换

    o 在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL ...

  6. python PIL 图像处理库简介(一)

    1. Introduction     PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处 ...

  7. Python图像处理库Pillow入门

    http://python.jobbole.com/84956/ Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处 ...

  8. python——PIL(图像处理库)

    PIL(Python Imaging Library,python图像处理库)提供了通用的图像处理功能,以及大量有用的基本图像操作,如图像缩放,裁剪,旋转,颜色转换等. 1.打开图像并显示 from ...

  9. Python图像处理库:PIL中Image,ImageDraw等基本模块介绍

    Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报  分类: 其他 ...

随机推荐

  1. 本机连接调试Erlang结点与rebar3编译

    今天需要实时查看目标结点上的相关信息,于是查阅了关于远程Shell使用的资料,最终采用JCL的方式与本机上的erlang结点交互.在使用erl shell时需要指定目标结点的cookie以及当前结点名 ...

  2. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  3. nginx开发_ngx_palloc源码解析

    功能简介 ngx_pool_t是nginx开发中最经常使用到的内存容器.对动态内存的封装,由框架进行创建与释放,模块开发过程中仅需要进行内存申请,不需要关注何时释放.常见的pool对象有: 1. ng ...

  4. POJ2274(后缀数组应用)

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 25272   Accepted: 10 ...

  5. zabbix server、agent安装及使用

    先准备yum源,当然你有打好的rpm包那更好 [root@linux-node1 ~]# cat /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix O ...

  6. C# 使用WebClient时,在多网卡时,指定IP发送Web请求

    需要定义一个类,重写GetWebRequest,在方法内,指定IP地址 public class MyWebClient : WebClient { private IPAddress ipAddre ...

  7. 三、mysql登录详解及版本号查询

    1.用window+r,输入cmd,用mysql -uuser -ppassword登录时出现‘mysql’不是有效的内部命令? 答:这是因为没有配置MySQL的环境变量path所致. MySQL的环 ...

  8. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  9. 1-2关键字 & 2-1什么是变量

    2-1什么是变量 驼峰第一个字母首字母小写后面字母首字母大写 Pascal命名规范:

  10. PHP实用小程序(六)

    <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio ...