edit
Это пример изображения того, что я использую, он не такой же, как тот, который я использовал в представлении отладки, но это привело к той же проблеме

Размер изображения здесь изменен. Фактический размер каждого кадра в пикселях должен составлять 2560x1440, но я также изменил его размер на 800 с тем же масштабированием

Вот код, который я использую, он простой
Код: Выделить всё
def extra_process(img):
sm = cv2.bilateralFilter(img, d=9, sigmaColor=75, sigmaSpace=75)
lab = cv2.cvtColor(sm, cv2.COLOR_BGR2LAB)
l, a, b = cv2.split(lab)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
l_clahe = clahe.apply(l)
lab_cl = cv2.merge((l_clahe, a, b))
return cv2.cvtColor(lab_cl, cv2.COLOR_LAB2BGR)
def process_pipeline(img):
enhanced = extra_process(img)
gray = cv2.cvtColor(enhanced, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blur, 30, 150, 3)
kernel = np.ones((3, 3), np.uint8)
dilated = cv2.dilate(edges, kernel, iterations=1)
closed = cv2.morphologyEx(dilated, cv2.MORPH_CLOSE, kernel, iterations=2)
h, w = closed.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
flooded = closed.copy()
cv2.floodFill(flooded, mask, seedPoint=(0,0), newVal=255)
filled = cv2.bitwise_not(flooded) | edges
Конечная цель
Моя конечная цель состоит в том, чтобы все объекты были полностью заполнены, а затем я смогу сделать водораздел на каждом объекте, чтобы создать границы, чтобы разделить соприкасающиеся или перекрывающиеся объекты.
Подробнее здесь: https://stackoverflow.com/questions/798 ... lled-later