我正在尝试创建一个方法,该方法将获取图像中的所有红色值并仅显示红色值。我的getRedImage()方法遇到问题。我是新手,非常感谢任何帮助!
public class SimpleRGB
{
private int width, height;
private int[][] red = new int[1000][1000];
此部分获取红色值并将其设置为我的2D红色数组的指定位置:
public void setRed(int x, int y, int aRed)
{
red[x][y] = aRed;
}
此部分在坐标(x,y)处获取红色值并返回它:
public int getRed(int x, int y)
{
int thisr = red[x][y];
return thisr;
}
我不确定如何说出这一部分。我知道我需要创建一个新的SimpleRGB对象来返回,然后使用嵌套的for循环将我的新简单RGB对象的红色2D数组设置为这个simpleRGB对象的红色2D数组,然后使用嵌套的for循环来将绿色和蓝色2D数组值都设置为全零。我只是不确定如何做到这一点。
public SimpleRGB getRedImage()
{
// This is where I am confused.
}
}
答案 0 :(得分:1)
在2d数组中循环很容易 但我不认为这是正确的方法。
private int[][] red = new int[1000][1000];
for (int i = 0; i < 1000; i++) {
for(int j = 0; j < 1000; j++) {
System.out.println(red[i][j]);
}
}
答案 1 :(得分:0)
我不太了解你的问题,但是,如果你有3个2D阵列,每个RGB一个:
int[][] red = new int[1000][1000];
int[][] green = new int[1000][1000];
int[][] blue = new int[1000][1000];
并且您只需要图像中的红色,只需将所有其他颜色设置为零:
public class SimpleRGB
{
private int width;
private int height;
private int[][] red = new int[1000][1000];
private int[][] green = new int[1000][1000];
private int[][] blue = new int[1000][1000];
public SimpleRGB(int[][] red, int[][] green, int[][] blue) {
this.red = red;
this.green = green;
this.blue = blue;
}
// some methods
public int[][] getRed() {
return red;
}
public int[][] getGreen() {
return green;
}
public int[][] getBlue() {
return blue;
}
// the method that interests you
public SimpleRGB getRedImage() {
return new SimpleRGB(red, new int[1000][1000], new int[1000][1000]);
}
}
创建一个新数组,默认情况下将其所有元素初始化为0。
答案 2 :(得分:0)
我终于明白了:
public SimpleRGB getRedImage()
{
SimpleRGB redImage = new SimpleRGB(width, height);
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
redImage.setRed(i, j, getRed(i, j));
redImage.setGreen(i, j, getGreen(i, j, 0);
redImage.setBlue(i, j, getBlue(i, j, 0));
}
}
return redImage;
}
我的基本结构正确但我改变了这个红色/绿色/蓝色而不是添加redImage.setRed来修改NEW对象。