Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Image draw_hist(Image src) { // HISTOGRAM DRAWING
- Image histogram = Image(100, 256);
- // Making hist_img null;
- for (int i = 0; i < histogram.n_rows; i++) {
- for (int j = 0; j < histogram.n_cols; j++) {
- std::get<0>(histogram(i,j)) = 0;
- std::get<1>(histogram(i,j)) = 0;
- std::get<2>(histogram(i,j)) = 0;
- }
- }
- int freq[256] = {0};
- int r_freq[256] = {0};
- int g_freq[256] = {0};
- int b_freq[256] = {0};
- int avg = 0;
- for (int row = 0; row < src.n_rows; row++) {
- for (int col = 0; col < src.n_cols; col++) {
- avg = (int) ((std::get<0>(src(row, col)) + std::get<1>(src(row, col)) + std::get<2>(src(row, col))) / 3);
- freq[avg]++;
- r_freq[(std::get<0>(src(row, col)))]++;
- g_freq[(std::get<1>(src(row, col)))]++;
- b_freq[(std::get<2>(src(row, col)))]++;
- }
- }
- int max = 0;
- for (auto &x : freq) { if (x > max) max = x; }
- // CODE BELOW IS USED FOR SETTING UP HIST IMAGE.
- // NOTHING INTERESTING HERE. I MEAN RLY.
- for (auto &x : freq) { if (x > max) max = x; }
- for (auto &x : r_freq) { x = (int)(((double)x / max) * 90); }
- for (auto &x : g_freq) { x = (int)(((double)x / max) * 90); }
- for (auto &x : b_freq) { x = (int)(((double)x / max) * 90); }
- for (int x = 0; x < 256; x++) {
- for (int c = 90; c > 90 - r_freq[x]; c--) {
- std::get<0>(histogram(c, x)) = 255;
- }
- }
- for (int x = 0; x < 256; x++) {
- for (int c = 90; c > 90 - g_freq[x]; c--) {
- std::get<1>(histogram(c, x)) = 255;
- }
- }
- for (int x = 0; x < 256; x++) {
- for (int c = 90; c > 90 - b_freq[x]; c--) {
- std::get<2>(histogram(c, x)) = 255;
- }
- }
- return histogram;
- }
Advertisement
Add Comment
Please, Sign In to add comment