我正在尝试将简单图像转换为矩阵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的值。
答案 0 :(得分:2)
试试这个:
C[i][j] = bi.getRGB(i, j);
getRGB()
方法返回一个整数,可以对其进行位掩码以为您提供单个组件。如果C是整数数组而不是双数,那将更合适。
答案 1 :(得分: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
}
并将其用作对象数组。
答案 2 :(得分: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;