Java 将图像转换为矩阵

Java 将图像转换为矩阵,java,image,matrix,Java,Image,Matrix,我试图将一个简单的图像转换成矩阵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

我试图将一个简单的图像转换成矩阵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]
        }
    }     
} 
public double[]img2matriz(BufferedImage bi){
双[][]C;
对于(int i=0;i请尝试以下方法:

C[i][j] = bi.getRGB(i, j);
getRGB()
方法返回一个整数,可以对其进行位屏蔽以获得各个组件。如果C是整数数组而不是双精度数组,则更合适。

创建一个类:

    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
    }

并将其用作对象数组。

首先:按如下方式初始化数组:

double[][] C = new double[bi.getHeight()][bi.getWidth()];
Second:从图像中获取
RGB
,并将其放入阵列中,如下所示:

C[i][j] = bi.getRGB(i, j);
如果您想获得图像中的3个频道
(红-绿-蓝)
:您可以这样做:

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