我有一组非常紧密的坐标。我通过使用python的image.draw.line()在它们之间绘制线来连接这些坐标。但是得到的最终曲线并不平滑,因为坐标处的线没有正确交叉。我也尝试绘制弧而不是线,但image.draw.arc()不会对坐标采用任何浮点输入。任何人都可以建议我连接这些点的其他方法,以便最终曲线将是平滑的。
答案 0 :(得分:2)
样条线是生成连接一组点的平滑曲线的标准方法。请参阅Wikipedia。
在Python中,您可以使用scipy.interpolate
来计算smoth曲线:
答案 1 :(得分:2)
Pillow并不支持很多画线的方法。如果您尝试绘制拱形,则无法选择厚度!
scipy使用matplotlib绘制图形。因此,如果直接使用matplotlib绘制线条,则可以通过axis('off')
命令关闭轴。有关更多详细信息,您可以查看:
Matplotlib plots: removing axis, legends and white spaces
如果您与轴无关,我建议您使用OpenCV而不是Pillow来处理图像。
def draw_line(point_lists):
width, height = 640, 480 # picture's size
img = np.zeros((height, width, 3), np.uint8) + 255 # make the background white
line_width = 1
for line in point_lists:
color = (123,123,123) # change color or make a color generator for your self
pts = np.array(line, dtype=np.int32)
cv2.polylines(img, [pts], False, color, thickness=line_width, lineType=cv2.CV_AA)
cv2.imshow("Art", img)
cv2.waitKey(0) # miliseconds, 0 means wait forever
lineType = cv2.CV_AA将绘制一条美观的抗锯齿线。