Python PILLOW 的点线或短划线

pro*_*jit 8 python python-imaging-library

如何使用 Python PILLOW 绘制点划线或虚线或矩形。谁能帮我?使用 openCV 我可以做到这一点。但我想用 Pillow 来实现。

Mar*_*ell 0

我决定写下我在评论中建议的想法 - 即用实线绘制形状,然后覆盖阈值噪声图像以消除线条的部分。

我在较小的图像上制作了所有噪点,然后将其放大,以便噪点“更加聚集”而不是微小的斑点。

所以这只是测试图像的生成:

#!/usr/local/bin/python3

import numpy as np
from PIL import Image, ImageDraw

# Make empty black image
im = Image.new('L', (640,480))

# Draw white rectangle and ellipse
draw = ImageDraw.Draw(im)
draw.rectangle([20,20,620,460],outline=255)
draw.ellipse([100,100,540,380],outline=255)
Run Code Online (Sandbox Code Playgroud)

这会生成噪声覆盖并覆盖它 - 您可以删除这句话并将两块代码连接在一起:

# Make noisy overlay, 1/4 the size, threshold at 50%, scale up to full-size
noise = np.random.randint(0,256,(120,160),dtype=np.uint8)
noise = (noise>128)*255
noiseim = Image.fromarray(noise.astype(np.uint8))
noiseim = noiseim.resize((640,480), resample=Image.NEAREST)

# Paste the noise in, but only allowing the white shape outlines to be affected
im.paste(noiseim,mask=im)
im.save('result.png')
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

在此输入图像描述

立体绘制的图像是这样的:

在此输入图像描述

噪音是这样的:

在此输入图像描述