zoukankan      html  css  js  c++  java
  • 图像处理库CImg

    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上该项目的主页,有论坛,我觉得作者非常认真负责,经常在上面为网友解答问题,详细细致。

  • 相关阅读:
    报错:No module named 'ConfigParser'
    报错:AttributeError: module 'selenium.webdriver' has no attribute 'Chrome'
    报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
    去掉“Chrome正在受到自动化测试软件的控制”
    XPath-Helper 的安装和使用
    Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors
    Message: unknown error: cannot get automation extension
    安装mysql-5.7.22-winx64中出现错误
    pip install 报错 Could not fetch URL
    Spring Boot 报错:Error creating bean with name 'entityManagerFactory' defined in class path resource
  • 原文地址:https://www.cnblogs.com/qxzy/p/4021591.html
Copyright © 2011-2022 走看看