я написал небольшую программу, чтобы определить гистограмму изображения как часть моей задачи:гистограмма код в C++ показывает некоторые сумасшедшие неожиданные цифры
void histogram(const SimpleGrayImage &img, long (&tab)[256]) { //SimpleGrayImage is a given class from our prof
int val = 0;
int count = 1;
while (val < 256) {
for (int i = 0; i < img.height(); i++) {
for (int j = 0; j < img.width(); j++) {
if (val == img[i][j]) { //with img[][] you can get the integer value (between 0<256)
tab[val] = count;
count++;
}
}
}
count = 0;
val++;
}
}
в следующем шаге я собираюсь распечатать массив:
int main(){
SimpleGrayImage img(RESOURCES_PATH "/black.pgm"); //loads a black image with the resolution of 512x512
long arr[256];
histogram(img, arr);
for(int j=0;j<256;j++){
cout<<"grey tone: "<<j<<" count: "<<arr[j]<<"\n"<<endl;
}
}
, когда я запустить эту программу консоль дает правовая информация:
grey tone: 0 count: 262144
. . .
другие серые тона (от 1-235) также дает нужную информацию (0), а затем консоль показать некоторые сумасшедшие цифры и я не могу объяснить, почему это происходит:
grey tone: 236 count: 288392707021528753
grey tone: 237 count: 140734701956328
grey tone: 238 count: 21
grey tone: 239 count: 1
grey tone: 240 count: 4392816744
grey tone: 241 count: 140734851732223
grey tone: 242 count: 140734701956144
grey tone: 243 count: 140734851576438
grey tone: 244 count: 140734701956176
. . .
так что вы, ребята, можете мне помочь в решении моей проблемы. спасибо :)
Ответ выполнен правильно. Также вы должны проверить свой метод. Внешний цикл while не нужен. –