Я думаю, это то, что вы хотите. Комментарии должны хорошо объяснить, о чем я говорю:
#!/usr/bin/env python3
import numpy as np
from PIL import Image, ImageFilter
from skimage.morphology import dilation, square
# Open input image and ensure it is greyscale
image = Image.open('XYbase.png').convert('L')
# Find the edges
edges = image.filter(ImageFilter.FIND_EDGES)
# Convert edges to Numpy array and dilate (fatten) with our square structuring element
selem = square(6)
fatedges = dilation(np.array(edges),selem)
# Make Numpy version of our original image and set all fatedges to brightness 128
imnp = np.array(image)
imnp[np.nonzero(fatedges)] = 128
# Convert Numpy image back to PIL image and save
Image.fromarray(imnp).save('result.png')
Итак, если я начну с этого изображения:
(промежуточные) ребра выглядят так:
И я получаю это в результате:
Если вы хотите, чтобы контуры толще / тоньше, увеличьте / уменьшите 6
в:
selem = square(6)
Если вы хотите, чтобы контуры были светлее / темнее, увеличьте / уменьшите 128
in:
imnp[np.nonzero(fatedges)] = 128
Ключевые слова : изображение, обработка изображений, откормить, утолщить, контур, след, край, выделение, Numpy, PIL, Подушка, край, края, морфология, структурирующий элемент, образ магии, scikit-изображение, эрозия , эрозия, расширение, расширение.