gpt4 book ai didi

c++ - c++ 中的直方图代码显示了一些疯狂的意外数字

转载 作者:行者123 更新时间:2023-11-28 00:09:00 26 4
gpt4 key购买 nike

我编写了一个小程序来确定图片的直方图作为我任务的一部分:

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

...

所以你们能给我一个解决我的问题的方法吗?谢谢:)

最佳答案

如果某些值根本不存在,那么您没有将数组初始化为零这一事实打击了您。

尝试这样的事情:

long arr[256];
for (int i = 0; i < 256; i++) {
arr[i] = 0;
}
histogram(img, arr);

或者,在您的 histogram 函数中处理初始化。

关于c++ - c++ 中的直方图代码显示了一些疯狂的意外数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com