2013-04-18 107 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;