Я пытаюсь вычислить серый оттенок 5 областей на моем изображении, показанном ниже. Но мне не удалось найти хороших команд в skimage
.
Сначала я замаскировал изображение, обработав следующий код:
import numpy as np
import matplotlib as mpl
from matplotlib.path import Path
from matplotlib import patches
import matplotlib.pyplot as plt
import skimage.io as io
from skimage import data_dir
img = io.imread('/media/rene/Windows8_OS/PROMON/Recorded Sequences/PNG/0rpm_p000.png')
vertices = np.asarray([( 947, 1959),
(1762, 1959),
(1762, 2241),
( 947, 2241),
( 947, 1089),
(1762, 1089),
(1762, 1371),
( 947, 1371),
( 947, 797),
(1762, 797),
(1762, 1079),
( 947, 1079),
( 947, 505),
(1762, 505),
(1762, 787),
( 947, 787),
( 947, 213),
(1762, 213),
(1762, 495),
( 947, 495)])
# reshape into smaller path for faster debugging
# vertices = vertices // 20
# matplotlib path
path = Path(vertices)
xmin, ymin, xmax, ymax = np.asarray(path.get_extents(), dtype=int).ravel()
# create a mesh grid of the shape of the final mask
x, y = np.mgrid[:img.shape[1], :img.shape[0]]
# mesh grid to points
points = np.vstack((x.ravel(), y.ravel())).T
# mask for the point included in the path
mask1 = path.contains_points(points)
path_points = points[np.where(mask1)]
# reshape mask for display
img_mask1 = mask1.reshape(x.shape).T
# selecting all but black pixels
# black_pixels_mask = np.all(img_mask1 == [0, 0, 0], axis=-1)
# non_black_pixels_mask = ~black_pixels_mask
# plots
f, ax = plt.subplots()
# if more thn one plot
# gs = mpl.gridspec.GridSpec(2,2)
# gs.update(wspace=0.2, hspace= 0.2)
# masked image
ax.imshow(img * img_mask1, cmap="gray")
ixs = np.indices(img.shape)
, но теперь я не знаю, как получить значения серого для каждой из 5 областей. Мои результаты должны выглядеть примерно так: Нахождение средних значений пикселей в списке BLOB-объектов, определенных методом blob_log (Laplacian of Gaussian) scikit-image
Маскированное изображение: