使用したライブラリ
Q.20. ヒストグラム表示
matplotlibを用いてimori_dark.jpgのヒストグラムを表示せよ。
簡単です。注意が必要なのは、ここでいうヒストグラムはRチャンネルのヒストグラム+Gチャンネルのヒストグラム+Bチャンネルのヒストグラムのことを想定しているらしいということです。
最初はグレースケールに対するヒストグラムかと思いました。正解出力が掲載されているので少し考えればわかりますが、少し不親切に感じました。特に言及なく、グレースケール画像が対象であることを想定した問題もありますし。
int main()
{
PPM ppm("imori_dark.pnm");
int width = ppm.Get_width();
int height = ppm.Get_height();
int N = 256;
std::vector<int> hist(N);
for (int n = 0; n < N; n++)
{
hist[n] = 0;
}
for(int j=0; j<height; j++)
for (int i = 0; i < width; i++)
{
hist[ppm(i, j, 'r')]++;
hist[ppm(i, j, 'g')]++;
hist[ppm(i, j, 'b')]++;
}
for (int n = 0; n < N; n++)
{
std::cout << n << " " << hist[n] << std::endl;
}
return 0;
}
これで20問完了です!