как рисовать фигуры (эллипсы, прямоугольники, круги и т. д.) с шириной линии, превышающей 1 пиксель - PullRequest
0 голосов
/ 31 октября 2019

Модуль skimage.draw имеет функции для рисования кругов, эллипсов, линий и т. Д. Однако ширина линии кажется фиксированной в 1 пиксель. Кажется, не существует параметра для установки ширины линии.

Стефан ван дер Вальт предположил, что в подмодуле skimage.measure есть скрытая функциональность для рисования более толстых линий, но я посмотрел документациюи увидел только функцию profile_line, которая имеет параметр linewidth. Я не знаю, имел ли он это в виду, или как я могу использовать это, чтобы нарисовать эллипс с шириной = 3.

Так как я могу нарисовать эллипс толщиной 3 пикселя в массив массивов изображений (типа поплавок)? Желательно использовать лыжный маг.

1 Ответ

0 голосов
/ 01 ноября 2019

Я бы использовал draw, чтобы нарисовать линию толщиной в 1 пиксель, а затем skimage.morphology.dilation, чтобы "утолстить" эту линию:

import numpy as np
import matplotlib.pyplot as plt
from skimage import draw, morphology

image = np.zeros((128, 128))
rr, cc = draw.ellipse_perimeter(64, 64, 20, 10)
image[rr, cc] = 1
dilated = morphology.dilation(image, morphology.disk(radius=1))
fig, (ax0, ax1) = plt.subplots(1, 2)
ax0.imshow(image)
ax1.imshow(dilated)

original(left) vs dilated(right)

...