Вероятно, ваши функции имеют одинаковое значение метки. regionprops
требует, чтобы ваши функции были помечены независимо, ie. 1, 2, 3, ...
. Вот пример:
В этом случае обе функции имеют значение метки 1
, поэтому они измеряются так, как если бы они были одним объектом:
import numpy as np
from skimage import measure
from matplotlib import pyplot as plt
im = np.zeros((600, 600), dtype=int)
im[350:400, 350:400] = 1
im[510:530, 200:240] = 1
np.unique(im)
>>> array([0, 1])
plt.matshow(im)
regions = measure.regionprops(im)
for r in regions:
plt.plot(*r.centroid[::-1], marker='x', color='r')
![one feature](https://i.stack.imgur.com/avFK3.png)
Если вы используете функцию measure.label
, вы можете пометить отдельные элементы независимо ie. значения меток 1, 2
:
plt.matshow(im)
labelled = measure.label(im)
np.unique(labelled)
>>> array([0, 1, 2])
regions = measure.regionprops(labelled)
for r in regions:
plt.plot(*r.centroid[::-1], marker='x', color='r')
, и это дает желаемый результат.
![labelled](https://i.stack.imgur.com/G4FO8.png)