首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SciPy中绘制粗的抗锯齿线条?

如何在SciPy中绘制粗的抗锯齿线条?
EN

Stack Overflow用户
提问于 2016-02-21 22:37:08
回答 2查看 2.2K关注 0票数 5

我在SciKit-Image中发现了这个函数,它允许您将正常的或抗锯齿的线绘制到numpy数组中。也可以选择创建面,但这些面不是抗锯齿的

因为没有绘制粗线(宽度大于一个像素)的功能,所以我考虑绘制一个多边形,并在边缘也绘制线条,以达到抗锯齿效果。但我认为这不是最好的解决方案。

这就是为什么我想问,是否有更好的选择将粗粗的抗锯齿线绘制到numpy数组中(可能使用matplotlib或其他工具)?

EN

回答 2

Stack Overflow用户

发布于 2016-02-22 06:46:41

使用PIL,您可以通过supersampling执行anti-alias。例如,

代码语言:javascript
复制
import numpy as np
from PIL import Image
from PIL import ImageDraw

scale = 2
width, height = 300, 200

img = Image.new('L', (width, height), 0)  
draw = ImageDraw.Draw(img)
draw.line([(50, 50), (250, 150)], fill=255, width=10)
img = img.resize((width//scale, height//scale), Image.ANTIALIAS)
img.save('/tmp/antialiased.png')
antialiased = np.asarray(img)
print(antialiased[25:35, 25:35])
# [[252 251 250 255 255 237 127  18   0   0]
#  [255 251 253 254 251 255 255 237 127  18]
#  [184 255 255 254 252 254 251 255 255 237]
#  [  0  72 184 255 255 254 252 254 251 255]
#  [  1   0   0  72 184 255 255 254 252 254]
#  [  0   3   1   0   0  72 184 255 255 254]
#  [  0   0   0   3   1   0   0  72 184 255]
#  [  0   0   0   0   0   3   1   0   0  72]
#  [  0   0   0   0   0   0   0   3   1   0]
#  [  0   0   0   0   0   0   0   0   0   3]]

img = Image.new('L', (width//scale, height//scale), 0)  
draw = ImageDraw.Draw(img)
draw.line([(25, 25), (125, 75)], fill=255, width=5)
img.save('/tmp/aliased.png')
aliased = np.asarray(img)
print(aliased[25:35, 25:35])
# [[255 255 255 255 255 255 255   0   0   0]
#  [255 255 255 255 255 255 255 255 255   0]
#  [255 255 255 255 255 255 255 255 255 255]
#  [  0   0 255 255 255 255 255 255 255 255]
#  [  0   0   0   0 255 255 255 255 255 255]
#  [  0   0   0   0   0   0 255 255 255 255]
#  [  0   0   0   0   0   0   0   0 255 255]
#  [  0   0   0   0   0   0   0   0   0   0]
#  [  0   0   0   0   0   0   0   0   0   0]
#  [  0   0   0   0   0   0   0   0   0   0]]

antialiased.png:

aliased.png

票数 7
EN

Stack Overflow用户

发布于 2020-12-10 14:39:04

在下面的问题中,有人已经给出了一个选项,如何只使用numpy来实现它。

https://stackoverflow.com/a/47381058

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35537453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档