CImg中文手冊(cè)1

本手冊(cè)主要介紹CImg庫主要的類和函數(shù):

類庫結(jié)構(gòu)

CImg僅包含一個(gè)頭文件CImg.h辖所;提供了一系列的C++模板類惰说,實(shí)現(xiàn)了單個(gè)圖像和圖像序列的加載、保存奴烙、處理助被、顯示等功能剖张;這樣的新穎設(shè)計(jì)有如下好處:

  • 不需要預(yù)處理;
  • 不需要處理復(fù)雜的文件依賴關(guān)系(可能作者對(duì)此的怨念很深)揩环;僅需在需要使用CImg的文件中包含CImg.h即可搔弄;
  • 只有應(yīng)用真正用到的函數(shù)會(huì)被編譯進(jìn)最終的程序品嚣;
  • 類成員和類函數(shù)都是內(nèi)聯(lián)的矛绘,運(yùn)行的時(shí)候會(huì)有更高的執(zhí)行效率屈暗;

CImg庫代碼組織如下:

  • 所有的類和方法都定義在cimg_library命名空間榛做;來避免類和函數(shù)的重名秒拔;使用的時(shí)候可以使用下面的代碼引入該命名空間:
  #include "CImg.h"
  using namespace cimg_library;
  ...
  • 命名空間cimg_library::cimg 定義了CImg的一系列底層函數(shù)和變量敬肚;可以使用該命名空間里面的函數(shù)淹魄,但是不要直接引用該命名空間籍铁,因?yàn)樵撁臻g里面定義了一系列C/C++標(biāo)準(zhǔn)庫已經(jīng)定義過的函數(shù)郁妈;
  • cimg_library::CImg<T>用來存儲(chǔ)最高4緯的圖像數(shù)據(jù)浑玛;T定義了像素值類型,這是CImg庫最重要的類噩咪;
  • cimg_library::CImgl<T> 用來表示圖像序列顾彰;
  • cimg_library::CImgDisplay用來將圖像和圖像集合顯示到屏幕窗口;該類實(shí)現(xiàn)雖然高度依賴操作系統(tǒng)胃碾,但是對(duì)使用者透明涨享;cimg_environment章節(jié)會(huì)介紹跟顯示有關(guān)的環(huán)境變量,這些環(huán)境變量在編譯的時(shí)候會(huì)被CImg自動(dòng)設(shè)置仆百;
  • cimg_library::CImgStats 用來表示圖像統(tǒng)計(jì)信息厕隧;使用它可以快速得到圖像的最大值、最大值像素座標(biāo)俄周、最小值吁讨、最小值像素座標(biāo)、平均值峦朗、方差等統(tǒng)計(jì)數(shù)據(jù)挡爵;
  • cimg_library::CImgException以及它的子類定義了程序運(yùn)行時(shí)的異常;
    了解了上述五個(gè)類就足夠開始使用CImg的函數(shù)甚垦。

CImg使用示例程序

下面是一個(gè)非常簡(jiǎn)單的示例程序,它創(chuàng)建了一個(gè)顯示“Hello World”文字的圖片涣雕,從中你能了解CImg最基本的使用艰亮;

  #include "CImg.h"
  using namespace cimg_library;
  int main() {
    CImg<unsigned char> img(640,400,1,3);        // Define a 640x400 color image with 8 bits per color component.
    img.fill(0);                                 // Set pixel values to 0 (color : black)
    unsigned char purple[3]={255,0,255};         // Define a purple color
    img.draw_text("Hello World",100,100,purple); // Draw a purple "Hello world" at coordinates (100,100).
    img.display("My first CImg code");           // Display the image in a display window.
    return 0;
  }

也可以寫的更緊湊一些:

  #include "CImg.h"
  using namespace cimg_library;
  int main() {
    const unsigned char purple[3]={255,0,255};
    CImg<unsigned char>(640,400,1,3,0).draw_text("Hello World",100,100,purple).display("My first CImg code");
    return 0;
  }

使用CImg可以寫出非常緊湊的代碼,CImg能夠用非常簡(jiǎn)單的代碼實(shí)現(xiàn)一系列實(shí)用的圖像處理操作挣郭;

編譯

CImg非常輕量和和易于使用迄埃;除了標(biāo)準(zhǔn)的系統(tǒng)函數(shù)外,沒有其他依賴兑障,這樣就避免了在編譯階段處理復(fù)雜的依賴關(guān)系侄非;每個(gè)發(fā)布的CImg版本可以在如下編譯器下編譯通過:

  • <b>Microsoft Visual C++ 6.0 and Visual Studio.NET</b> : CImg庫提供了相關(guān)的參考工程文件蕉汪;
  • <b>Intel ICL compiler</b> : 使用如下命令在ICL下編譯基于CImg的程序:
  icl /Ox hello_world.cpp user32.lib gdi32.lib
  • <b>Digital Mars Compiler</b> : 使用如下命令在DMC下編譯基于CImg的程序:
  dmc -Ae hello_world.cpp gdi32.lib
  • <b>g++ (MingW windows version)</b> : 使用如下命令在MingW g++下編譯基于CImg的程序:
// Windows下:
  g++ -o hello_word.exe hello_word.cpp -O2 -lgdi32
  • <b>g++ (Linux version)</b> : 使用如下命令在Linux g++下編譯基于CImg的程序 :
  g++ -o hello_word.exe hello_world.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11
  • <b>g++ (Solaris version)</b> : 使用如下命令在g++(Solaris)下編譯基于CImg的程序 :
  g++ -o hello_word.exe hello_world.cpp -O2 -lm -lpthread -R/usr/X11R6/lib -lrt -lnsl -lsocket
  • <b>g++ (Mac OS X version)</b> : 使用如下命令在g++(Mac)下編譯基于CImg的程序:
  g++ -o hello_word.exe hello_world.cpp -O2 -lm -lpthread -L/usr/X11R6/lib -lm -lpthread -lX11
  • <b>Dev-Cpp</b> : CImg庫提供了相關(guān)的參考工程文件.
    如果需要支持其他編譯器,請(qǐng)給庫作者寫信逞怨;但是不支持C++模板的編譯器不會(huì)被支持

其他

歡迎反饋在使用CImg中遇到的問題者疤,以及參與完善該文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叠赦,一起剝皮案震驚了整個(gè)濱河市驹马,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌除秀,老刑警劉巖糯累,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異册踩,居然都是意外死亡泳姐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門暂吉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胖秒,“玉大人,你說我怎么就攤上這事借笙“遣溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵业稼,是天一觀的道長(zhǎng)盗痒。 經(jīng)常有香客問我,道長(zhǎng)低散,這世上最難降的妖魔是什么俯邓? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮熔号,結(jié)果婚禮上稽鞭,老公的妹妹穿的比我還像新娘。我一直安慰自己引镊,他們只是感情好朦蕴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弟头,像睡著了一般吩抓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赴恨,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天疹娶,我揣著相機(jī)與錄音,去河邊找鬼伦连。 笑死雨饺,一個(gè)胖子當(dāng)著我的面吹牛钳垮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播额港,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼饺窿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了锹安?” 一聲冷哼從身側(cè)響起短荐,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叹哭,沒想到半個(gè)月后忍宋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡风罩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年糠排,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片超升。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡入宦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出室琢,到底是詐尸還是另有隱情乾闰,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布盈滴,位于F島的核電站涯肩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏巢钓。R本人自食惡果不足惜病苗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望症汹。 院中可真熱鬧硫朦,春花似錦、人聲如沸背镇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞒斩。三九已至挚赊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間济瓢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工妹卿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旺矾,地道東北人蔑鹦。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箕宙,于是被迫代替她去往敵國(guó)和親嚎朽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容