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 的值。

4

3 回答 3

2

尝试这个:

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

getRGB()方法返回一个整数,可以对其进行位掩码以提供各个组件。如果 C 是一个整数数组,而不是双精度数组,那会更合适。

于 2013-04-18T19:16:21.250 回答
0

create a class :

    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
    }

and use it as array of object .

于 2013-04-18T19:21:35.927 回答
0

First : initialize your array Like this :

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

Second : get the RGB from your Image and put it in your array, Like this:

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

and if you want to get the 3 channels in your image(RED-GREEN-BLUE) : You can do this :

int red = (C[i][j]>> 16) & 0x000000FF;
int green = (C[i][j]>>8 ) & 0x000000FF;
int blue = (C[i][j]) & 0x000000FF;
于 2013-04-18T19:22:59.360 回答