我必须遵循完整参考文献中的代码
它有关以下语法: - “hist [y] ++;”出现在那里 它关于创建img的亮度值的直方图。
我想知道它在代码中意味着什么,因为hist []定义为int [256],而此处的itteration远大于256。
int hist[] = new int[256]; <<<<<<<<defined here 256 elements
...
for (int i=0; i<iw*ih; i++) {
int p = pixels[i];
int r = 0xff & (p >> 16);
int g = 0xff & (p >> 8);
int b = 0xff & (p);
int y = (int) (.33 * r + .56 * g + .11 * b);
hist[y]++; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<here many more elements
}
等。等。
答案 0 :(得分:1)
hist[y]++;
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;&LT;这里还有更多元素
您可能将表达式hist[y]++
与hist[y++]
混淆或将y
与循环索引i
混淆。
表达式hist[y]++
只是将索引y
的值增加1。索引y
在上面的行中设置为
int y = (int) (.33 * r + .56 * g + .11 * b);
由于r
,g
和b
都是<= 255
,y
的最大值为
.33*255 + .56*255 + .11*255
= (.33 + .56 + .11) * 255
= 1 * 255
所以256个元素的数组就足够了。