计算2d数组中的所有数字

时间:2017-05-11 01:47:53

标签: c++

我想计算2d数组中的所有数字并将计数存储到另一个数组中,因此我可以使用直方图均衡中的值。我正在计算范围从0到255的值,因此每次都是数字,例如18在2d数组中出现我想要计算2d数组中有多少18,然后将计数存储到num [17]。问题是我没有得到合适的金额。我知道是因为温度不在正确的地方,但我无法弄清楚放在哪里。任何帮助将不胜感激。

#include <iostream>




void histeq(int **pix, int height, int width) {

int num[255];
for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {
        int temp = 0;
        for (int k = 1; k <= 255; k++)

        {

            if (pix[i][j] == k)
            {
                temp = temp + 1;
            }
            num[k - 1] = temp;
            cout << num[k - 1] << endl;
        }

    }
}
}

4 个答案:

答案 0 :(得分:2)

你的问题不是很清楚,但我最好的猜测是你需要这个:

void histeq(int **pix, int height, int width) {

    int num[256] = {0};
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            num[pix[i][j]] += 1;
        }
    }
    for (int i = 0; i < 256; ++i)
    {
        cout << num[i] << endl;
    }
}

答案 1 :(得分:2)

#include <map>
void histeq(int **pix, int height, int width) {

std::map <int, int> num;
for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {
        num[pix[i][j]]++;    
    }
}
for (int i = 0; i < num.size(); i++)
    cout << num[i] <<endl;
}

答案 2 :(得分:0)

我得到了你的期望。你的意思是你想要计算2d数组中的范围[0:255]的时间数:

#include <iostream>

void histeq(int **pix, int height, int width) {

int num[255];

for (int k =1; k <= 255; k++)
{
int temp = 0;
for (int i = 0; i < height; i++){
    for (int j = 0; j < width; j++){
        if (pix[i][j] == k)
        {
            temp +=1;
        }
   }
}
num[k - 1] = temp;
cout << num[k - 1] << endl;
}

} 

答案 3 :(得分:-2)

你的意思是你想要计算2d阵列中的数字K?