我想计算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;
}
}
}
}
答案 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?