gpt4 book ai didi

python - 为什么 PIL 绘制多边形不接受 numpy 数组?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:24 25 4
gpt4 key购买 nike

此代码按预期工作:

import numpy as np
from PIL import Image, ImageDraw

A = (
( 2, 2),
( 2, 302),
( 302, 302),
( 302, 2)
)

img = Image.new('L', (310, 310), 0)
ImageDraw.Draw(img).polygon(A, outline=1, fill=1)
mask = np.array(img)

print(mask)

但是,如果 A 矩阵作为 numpy 数组提供:

A = np.array(
[[ 2, 2],
[ 2, 302],
[302, 302],
[302, 2]], dtype="int32"
)

它会产生完全错误的结果。我也尝试展平 A 数组,但没有帮助。

我错过了什么吗?我能以某种方式将 numpy 数组直接填充到 PIL 中吗?

最佳答案

如果 call-interaface 说使用元组列表或交错值列表,

最好使用元组列表或交错值的序列/列表:

PIL.ImageDraw.ImageDraw.polygon( xy, fill = None, outline = None )
Draws a polygon.

The polygon outline consists of straight lines between the given coordinates, plus a straight line between the last and the first coordinate.

xy – Sequence of
either
2-tuples like [(x, y), (x, y), ...]
or
numeric values like [x, y, x, y, ...].


我可以填充..

使用

>>> xy
array([[ 2, 3],
[10, 3],
[10, 0],
[ 2, 0]])
>>> xy.flatten().tolist()
[ 2, 3, 10, 3, 10, 0, 2, 0 ]
>>>

应工作并满足 ImageDraw.polygon()

的 PIL 记录的调用接口(interface)

关于python - 为什么 PIL 绘制多边形不接受 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com