我尝试创建一个计算图像直方图的程序。我已经得到了上面的代码,但我不明白为什么它不起作用。
public void hist(List<Integer> r, List g, List b){
int count[] = new int [256];
int rSize = r.size();
int gSize = g.size();
int bSize = b.size();
for (int j = 0; j<=255; j++){
for(int i = 0; i < rSize; i++){
if( r.get(i) == j ){}
//System.out.println(r.get(i) == j);
count[j]++;
}
}
for (int i = 0; i < count.length; i++) {
System.out.print(count[i]);
}
}
如果我在 main 中调用它,count 的每个元素都是 rSize,这是不可能的,因为 r 列表具有图像的红色 channel 的值。
最佳答案
您的 if
为空:if( r.get(i) == j ){}
。
应该是:
if( r.get(i) == j )
{
count[j]++;
}
下次可能想使用调试器并简单地单步执行代码,这样就可以很容易地发现这一点。
关于java - java中的直方图计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637547/