Java 将图像转换为矩阵
我试图将一个简单的图像转换成矩阵m*N,其中m和N是图像的宽度和高度。 但在这一点上,我不明白最好的方法来制定步骤 现在有我的代码: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
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;