#python #python-imaging-library #cv2
#python #python-imaging-library #cv2
Вопрос:
У меня есть массив изображения в масштабе серого
Array
пример такого массива;
array([[[142, 142, 142],
[143, 143, 143],
[142, 142, 142],
...,
[147, 147, 147],
[148, 148, 148],
[143, 143, 143]],
[[142, 142, 142],
[142, 142, 142],
[142, 142, 142],
...,
[148, 148, 148],
[150, 150, 150],
[147, 147, 147]],
И тип массива равен
Array.dtype
dtype('uint8')
Я хочу построить гистограммы с 16, 32 и 64 ячейками для этого массива, у кого-нибудь есть идея?
Комментарии:
1. значения массива представлены с помощью
uint8
, но сами значения находятся в0-255
диапазоне (посколькуuint8
могут представлять2^8
значения). Построение гистограммы значений должно быть простым, если это было вашей путаницей.
Ответ №1:
Я заметил, что у вас есть изображение RGB (3 канала). Вероятно, вы захотели бы визуализировать его гистограмму по каждому каналу (красному, зеленому и синему).
Вы можете легко достичь этого с помощью pandas
. Например, учитывая массив изображений RGB img
с той же структурой данных, что и ваша переменная Array
, вы можете построить гистограмму для каждого канала, преобразовав ее в DataFrame
import pandas as pd
df = pd.DataFrame({
'red': img[...,0].ravel(),
'green': img[...,1].ravel(),
'blue': img[...,2].ravel()
})
А затем построить его с помощью plot.hist
df.plot.hist(bins=n_bins, alpha=.3, xlim=[0,255], color=['red', 'green', 'blue'])
Где n_bins
— количество ячеек.
Для n_bins=16
Для n_bins=32
Для n_bins=64