【CImg】基本像素操作


繼openCV之后接觸的又一個C++視覺庫——短小精干的CImg

剛開始接觸的時候真的是..幾乎無從下手,網上資料比較少,但發現有一篇非常有用的中文手冊:http://wenku.baidu.com/link?url=GKEgUZUzabHADgCQG3Dg5NGzaMevXu38vvHF71UB339zZJVLaqYWCrPQfmNV7Y0gYMb340wVNK9fJ7Zu0H54Hchi8UwKI3yCQlCnVcoC8mK

再加上,CImg本身的代碼並不是很多,也容易理解,最關鍵的是,源碼里注釋寫得很明白,所以打開源碼,ctrl+F來學習也非常不錯。

這里記錄一下CImg的一些基本的像素操作

————————————————我是一條分割線—————————————————————

主要是這幾個:

(x, y分別表示在橫縱軸上的坐標,(0,0)在左上角, z = 1時,表示2D圖像, c 表示通道數)

//存取(x, y)處,z通道的值, 若X小於0,則取值為零,若x大於width,則取值width-1處,最后存取(x, y, z, c)的值

T& atX(int x, int y, int z, int c)

//存取(x, y)處,z通道的值  ,防止X、Y超出范圍,若是超出范圍則取邊界值,最后存取(x, y, z, c)的值

T& atXY(int x, int y, intz, int c)  

//存取(x, y)處,z通道的值  ,防止X、Y、Z超出范圍,同上     

T& atXYZ(int x, int y, int z, int c)    

//存取(x, y)處,z通道的值  ,防止X、Y、Z、C超出范圍, 同上   

T& atXYZC(int x, int y, int z, int c)      

//存取(x, y)處,z通道的值  , 若X超出范圍,則返回out_value 

T& atX(int x, int y, int z, int c, const T& out_value)   

//存取(x, y)處,z通道的值  , 若(X超出范圍 || y超出范圍),則返回out_value    

T& atXY(int x, int y, intz, int c, const T& out_value)       

//存取(x, y)處,z通道的值  ,若(X超出范圍 || y超出范圍 || z超出范圍),則返回out_value

T& atXYZ(int x, int y, int z, int c, const T& out_value)    

//存取(x, y)處,z通道的值  ,若(X超出范圍 || y超出范圍 || Z超出范圍 || C超出范圍),則返回out_value   

T& atXYZC(int x, int y, int z, int c, const T& out_value)    

 

編譯指令:

g++ -o test.exe test.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11

運行:

./test.exe 

 

code:

 1 #include <iostream>
 2 #include "CImg.h"
 3 
 4 using namespace cimg_library;
 5 using namespace std;
 6 
 7 int main(int argc, char* argv[]) {
 8 
 9     CImg<unsigned char> testImage1("images/image3.bmp");
10     CImg<unsigned char> testImage2(testImage1.width(), testImage1.height(), 1, 3);
11     for (int i = 0; i < testImage1.width(); i ++)
12         for (int j = 0; j < testImage1.height(); j ++)
13             for (int k = 0; k < 3; k ++)
14                 testImage2.atXYZC(i, j, 1, k) = testImage1.atXYZC(i, j, 1, k);
15     testImage2.display("COPY");
16         return 0;
17 }
View Code

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM