Processing:Примеры/Гистограмма
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот скетч-пример рассчитывает и показывает гистограмму изображения. Гистограмма – это способ графического отображения данных, и в этом скетче рассчитывается и показывается распределение уровней серого на изображении. На левом краю показано количество значений белого, а на правом краю – количество значений черного. Значения между этими двумя «полюсами» – это промежуточные значения (оттенки) серого: от наиболее светлого (слева) к наиболее темному (справа).
Примечание: На Android этот скетч будет вести себя по-другому, потому что цветовая информация большинства изображений уже не имеет 24-битную глубину.
Пример
size(640, 360);
// загружаем изображение из папки данных скетча;
// чтобы загрузить какое-то другое изображение,
// отредактируйте фрагмент "frontier.jpg",
// вписав туда название своего изображения:
PImage img = loadImage("frontier.jpg");
image(img, 0, 0);
int[] hist = new int[256];
// рассчитываем гистограмму:
for (int i = 0; i < img.width; i++) {
for (int j = 0; j < img.height; j++) {
int bright = int(brightness(get(i, j)));
hist[bright]++;
}
}
// находим самое высокое значение гистограммы:
int histMax = max(hist);
stroke(255);
// рисуем половину гистограммы (пропускаем каждое второе значение):
for (int i = 0; i < img.width; i += 2) {
// подгоняем значение «i» (начиная с «0» и до «img.width»)
// к позиции на гистограмме (0-255):
int which = int(map(i, 0, img.width, 0, 255));
// конвертируем значение гистограммы в координату на оси Y:
int y = int(map(hist[which], 0, histMax, img.height, 0));
line(i, img.height, i, y);
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |