Я не потратил слишком много времени на полировку этого ответа, но он должен помочь вам начать, а затем вы можете привести его в порядок. Основная идея c состоит в том, чтобы преобразовать ваш желтый цвет в белый, а все остальное в черный:
#!/usr/bin/env python3
import numpy as np
import cv2
from scipy.ndimage.morphology import distance_transform_edt
# Load the image
im = cv2.imread('cells.png')
# Form binary image which is white where orginal is yellow and black everywhere else
B = np.zeros_like(im[...,0])
B = im == [38, 230, 253]
cv2.imwrite('tmp.png', (B*255).astype(np.uint8))
Это дает вам следующее:
Теперь, сделайте преобразование расстояния :
# Get distance transform
distance = distance_transform_edt(B)
# Normalise for contrast and save
cv2.normalize(distance, distance, 0, 255, cv2.NORM_MINMAX)
cv2.imwrite('result.png', distance.astype(np.uint8))
Таким образом, в основном, ярче точка в результате изображение, тем дальше от клеточных стенок и других вещей. Затем вы можете найти максимумы здесь и использовать их для дальнейшей проверки.