Главная » 2025 » Декабрь » 22 » UImageGray: вычисление гистограммы
22:27
UImageGray: вычисление гистограммы

UImageGray: вычисление гистограммы

Вычислить гистограмму позволяет статический метод uimagegray_histogram() из класса UHelperNP. Формат метода:

UHelperNP.uimagegray_histogram(<UImageGray>)

В качестве параметра указывается объект UImageGray. Метод возвращает объект UMat из 257 элементов или значение None в случае ошибки. Первые 256 элементов списка содержат распределение пикселей. Индексы списка совпадают с кодом цвета, а значения показывают числа пикселей с кодом. Последний элемент списка содержит общее число пикселей. Операция выполняется с помощью библиотеки NumPy. Пример:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP

img = UImageGray(3, 2)
img.arr = [0, 0, 128, 255, 255, 255]
hist = UHelperNP.uimagegray_histogram(img)
if hist:
    print(hist.width)         # 257 (ширина)
    print(hist.height)        # 1 (высота)
    print(hist.num_channels)  # 1 (число каналов)
    print(len(hist.arr))      # 257
    print(hist.mat_type)      # 6 (тип данных UMat.Type_32S)
    print(hist.arr[0])        # 2 (число черных пикселей)
    print(hist.arr[255])      # 3 (число белых пикселей)
    print(hist.arr[128])      # 1 (число пикселей с цветом 128)
    print(hist.arr[64])       # 0 (число пикселей с цветом 64)
    print(hist.arr[256])      # 6 (число всех пикселей)
else:
    print("Ошибка при выполнении операции")

Для вычисления гистограммы можно также воспользоваться статическим методом uimagegray_histogram_nd() из класса UHelperNP. Формат метода:

UHelperNP.uimagegray_histogram_nd(<UImageGray>)

В качестве параметра указывается объект UImageGray. Метод возвращает кортеж из двух элементов (counts, bins) или значение None в случае ошибки. 256 элементов NumPy массива counts содержат распределение пикселей. Индексы массива совпадают с кодом цвета, а значения показывают числа пикселей с кодом. 257 элементов NumPy массива bins содержат метки для графика. Операция выполняется с помощью библиотеки NumPy. Пример:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP

img = UImageGray(3, 2)
img.arr = [0, 0, 128, 255, 255, 255]
histogram = UHelperNP.uimagegray_histogram_nd(img)
if histogram:
    hist, bins = histogram
    print(hist.shape)         # (256,)
    print(hist.dtype)         # int64
    print(bins.shape)         # (257,)
    print(bins.dtype)         # float64
    print(hist[0])            # 2 (число черных пикселей)
    print(bins[0])            # 0.0
    print(hist[255])          # 3 (число белых пикселей)
    print(bins[255])          # 255.0
    print(hist[128])          # 1 (число пикселей с цветом 128)
    print(bins[128])          # 128.0
    print(hist[64])           # 0 (число пикселей с цветом 64)
    print(bins[64])           # 64.0
else:
    print("Ошибка при выполнении операции")

Отобразить график plot() с гистограммой в диалоговом окне можно так:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP
import matplotlib.pyplot as plt

img = UImageGray.load("foto.jpg")
counts, bins = UHelperNP.uimagegray_histogram_nd(img)

fig, ax = plt.subplots()
ax.set_title("Гистограмма")
ax.set_xlabel("Значение цвета")
ax.set_ylabel("Количество пикселей")
ax.set_xlim([0, 255])
ax.plot(bins[:-1], counts)
plt.show()

Отобразить график stairs() с гистограммой в диалоговом окне можно так:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP
import matplotlib.pyplot as plt

img = UImageGray.load("foto.jpg")
counts, bins = UHelperNP.uimagegray_histogram_nd(img)

fig, ax = plt.subplots()
ax.set_title("Гистограмма")
ax.set_xlabel("Значение цвета")
ax.set_ylabel("Количество пикселей")
ax.set_xlim([0, 255])
ax.stairs(counts, bins)
plt.show()

Отобразить график hist() с гистограммой в диалоговом окне можно так:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP
import matplotlib.pyplot as plt
from matplotlib.ticker import FixedLocator

img = UImageGray.load("foto.jpg")
counts, bins = UHelperNP.uimagegray_histogram_nd(img)

fig, ax = plt.subplots()
ax.set_title("Гистограмма")
ax.set_xlabel("Значение цвета")
ax.set_ylabel("Количество пикселей")
ax.set_xlim([-5, 260])
ax.xaxis.set_major_locator(FixedLocator([0, 64, 128, 192, 255]))
ax.hist(bins[:-1], bins, weights=counts)
plt.show()

Если нужно просто посмотреть гистограмму в диалоговом окне, то следует воспользоваться следующим кодом:

from unicross_image.uimagegray import UImageGray
from unicross_image.uhelper_np import UHelperNP
import matplotlib.pyplot as plt

img = UImageGray.load("foto.jpg")

fig, ax = plt.subplots()
ax.set_title("Гистограмма")
ax.set_xlabel("Значение цвета")
ax.set_ylabel("Количество пикселей")
ax.set_xlim([0, 255])
ax.hist(img.arr, bins=range(256))
plt.show()

Класс входит в состав графической библиотеки UImage для Python 3. Описание библиотеки UImage

Категория: UImage | Просмотров: 6 | Добавил: unicross | Теги: UImageGray, UImage, Python, NumPy, UHelperNP | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Списки слов [10]
Списки слов и словари
OCR [4]
Оптическое распознавание символов
UImage [80]
Графическая библиотека для Python
UImage C [7]
Графическая библиотека для Python
Программы [4]
Полезные программы
Прочее [3]
Другие темы
Календарь
«  Декабрь 2025  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728
293031