for (int i = 0; i < c.length; i++)
{
for(int j=0; j<c[i].length;j++)
{
if(peak1[i]<c[i][j]){
peak1[i] = c[i][j];
peak1loc1[i]= j;
}
}
println(peak1[2]);
println(peak2[2]);`
这是我到目前为止所尝试的内容。出于某种原因,peak1
和peak2
正在打印相同的值。
我有一个二维数组,用于保存图像的RGB颜色值。我想找到每个通道的两个主要峰(r,g,b),以及这两个主要峰之间的谷,所以我将得到红色的两个主要峰,绿色的两个主要峰,蓝色的两个主要峰和山谷(主峰之间的最小值),总共三个山谷。
是否有任何算法或任何人可以给我一些想法如何找到这些?伪代码真的很有帮助。
答案 0 :(得分:0)
也许是这样的?
import java.util.*;
color[][] c = new color [10][2];
void setup() {
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[0].length; j++) {
c[i][j] = color(random(255), random(255), random(255));
}
}
float[] reds = new float[c.length*c[0].length];
for (int i = 0; i < reds.length; i++) {
if ( i < c.length)
reds[i] = red(c[i][0]);
else
reds[i]=red(c[i-c.length][1]);
}
println("\n unsorted red values");
println(reds);
Arrays.sort(reds);
println("\nSORTED");
println(reds);
println("\n\n the bigger red value is: " + reds[reds.length-1]);
println("\n the 2nd bigger red value is: " + reds[reds.length-2]);
println("\n the smaller red value is: " + reds[0]);
println("\n\n cheers");
}