A simple (but not very fast) Python implementation of Determining watersheds in digital pictures via flooding simulations.
In contrast to skimage.morphology.watershed
and cv2.watershed
this implementation does not use marker seeds.
import numpy as np
from Watershed import Watershed
from PIL import Image
import matplotlib.pyplot as plt
w = Watershed()
image = np.array(Image.open('ex.png'))
labels = w.apply(image)
plt.imshow(labels, cmap='Paired', interpolation='nearest')
plt.show()