Width 如何绘制线宽大于1像素的形状(椭圆、矩形、圆形等)

Width 如何绘制线宽大于1像素的形状(椭圆、矩形、圆形等),width,draw,shapes,scikit-image,Width,Draw,Shapes,Scikit Image,skimage.draw模块具有绘制圆、椭圆、线等的功能。但是,线宽似乎固定为1像素。似乎没有设置线宽的参数 Stefan van der Walt建议skimage.measure子模块中有隐藏的功能来绘制更粗的线条,但我查看了文档,只看到了profile\u line函数,它确实有一个linewidth参数。我不知道这是否是他的意思,或者我如何用它来画一个宽度为3的椭圆 那么,如何将厚度为3像素的椭圆绘制成numpy图像数组(输入float)?最好使用撇除法。我会使用绘制一条1像素厚的线,然

skimage.draw模块具有绘制圆、椭圆、线等的功能。但是,线宽似乎固定为1像素。似乎没有设置线宽的参数

Stefan van der Walt建议skimage.measure子模块中有隐藏的功能来绘制更粗的线条,但我查看了文档,只看到了
profile\u line
函数,它确实有一个
linewidth
参数。我不知道这是否是他的意思,或者我如何用它来画一个宽度为3的椭圆


那么,如何将厚度为3像素的椭圆绘制成numpy图像数组(输入float)?最好使用撇除法。

我会使用
绘制一条1像素厚的线,然后使用
撇除法.形态学.膨胀
来“加厚”这条线:

将numpy导入为np
将matplotlib.pyplot作为plt导入
从撇渣导入绘图、形态学
image=np.zero((128128))
rr,cc=绘制椭圆周长(64,64,20,10)
图像[rr,cc]=1
扩张=形态。扩张(图像,形态。圆盘(半径=1))
图(ax0,ax1)=plt.子批次(1,2)
ax0.imshow(图片)
ax1.imshow(放大)

我也在尝试做同样的事情。 幸运的是,我只需要画一个边界框,所以我用这种方法迭代。 不确定此方法是否适用于其他形状

for i in range(0,thickness):
    rect = skimage.draw.rectangle_perimeter(start=(b[1]-i,b[0]-i)
                  ,end(b[3]+i,b[2]+i),shape=(1024,1024))
    skimage.draw.set_color(img_with_box,rect,(1.0,-1,-1))

(Stéfan的评论适用于
profile_line
的源代码,无论如何,你只能用它来画直线。)太棒了。我还没有看过形态学子模块。我会看看它还有什么好东西。我想做的另一件事是在位图上标注椭圆。从
draw.ellipse_Permiture()
输出的1个像素(rr,cc)很容易做到这一点,但如何使用
形态学.膨胀()
?也许对于一个3像素宽的椭圆来说,在位图上绘制3个椭圆同样容易,每个椭圆的半径为r-1,r,r+1??如上所述,绘制一个布尔零数组,然后执行
target\u image[椭圆布尔]=target\u注释\u color