0
我有三个二维数组,分别持有一个图像的红色,绿色和蓝色像素值。使用的初始图像是一个模糊的图像,然后被分割成这些RGB值,以便我可以在每个阵列上运行函数来去除图像。然后我需要连接这些数组(可能会创建一个新的3D数组)并显示结果图像。如何连接三个二维数组,然后将结果显示为图像?
到目前为止,我试过使用System.arraycopy(),但这只给我int值,我正在处理双精度数组。
我也试着给每个二维数组叠加到对方创建三维阵列,像这样,
for(int i = 0; i<redPixels.length; i++){
for(int j = 0; j<redPixels[0].length; j++){
concatPixels[i][j][1] = redPixels[i][j];
}
}
for(int i = 0; i<greenPixels.length; i++){
for(int j = 0; j<greenPixels[0].length; j++){
concatPixels[i][j][2] = greenPixels[i][j];
}
}
for(int i = 0; i<bluePixels.length; i++){
for(int j = 0; j<bluePixels[0].length; j++){
concatPixels[i][j][3] = bluePixels[i][j];
}
}
,但我得到一个ArrayIndexOutOfBoundsException当谈到第三for循环,当我尝试将bluePixels添加到concatPixels数组中。
另外,一旦我能够连接二维数组,我怎样才能显示一个3D数组作为图像。我一直在使用BufferedImage,它似乎只处理二维数组。
感谢您的回复。出于某种原因,当涉及到行concatPixels [i] [j] [3] = bluePixels [i] [j]时,我仍然得到一个ArrayIndexOutOfBoundsException;即使我的数组的所有长度都是1024. – skelto 2015-02-07 15:38:37
已编辑的代码。现在它应该可以正常工作。 :) – 2015-02-08 18:01:54
当然是啊!非常感谢!对不起,我不能投票,因为我没有足够的代表。你会知道如何将3D阵列显示为图像吗? – skelto 2015-02-09 13:20:08