2013-04-18 110 views
0

我試圖將一個簡單的圖像轉換爲矩陣M * N,其中M和N是我的圖像的寬度和高度。 但在這一點上,我不明白解決這些步驟的最佳方法。將圖像轉換爲矩陣

有我的代碼,在這一刻:

public double[][] img2matriz(BufferedImage bi){ 
    double[][] C; 
    for(int i=0;i<bi.getHeight();i++) 
    { 
     for(int j=0;j<bi.getWidth();j++) 
     { 
      C[i][j] 
     } 
    }  
} 

在[i]和[J]。我希望把矩陣RGB值分別。

回答

2

試試這個:

C[i][j] = bi.getRGB(i, j); 

getRGB()方法返回一個整數,可加位掩碼給你的各個組件。如果C是一個整數數組而不是double,那將更合適。

0

創建類:

class RGB { 
     private : 
      float r; 
      float g; 
      float b; 

      RGB(float rr , float gg , float bb) : r(rr) ,g(gg), b(bb){} 
     public: 
... member functions 
    } 

,並使用它作爲對象的陣列。

0

首先:初始化數組像這樣:

double[][] C = new double[bi.getHeight()][bi.getWidth()]; 

:從你的形象RGB,並把它放在你的陣中,像這樣:

C[i][j] = bi.getRGB(i, j); 

,如果你想得到你的圖像中的3個通道(RED-GREEN-BLUE):你可以這樣做:

int red = (C[i][j]>> 16) & 0x000000FF; 
int green = (C[i][j]>>8) & 0x000000FF; 
int blue = (C[i][j]) & 0x000000FF;