【发布时间】:2020-03-26 18:18:21
【问题描述】:
我需要画很多相互重叠的半透明圆圈。问题是它应该工作得很快。我写了以下代码:
im = Image.new('RGBA', (512, 512), (255, 255, 255, 0))
for i in range(1000):
im1 = Image.new("RGBA", (512, 512), (255, 255, 255, 0))
draw = ImageDraw.Draw(im1)
draw.ellipse(c[i].cv_repr(), fill=c[i].color)
im = Image.alpha_composite(im1,im)
这段代码可以工作,但速度很慢。有没有不使用Image.alpha_composite 的方法来获得更好的性能?下图是预期的结果。
【问题讨论】:
-
您可以通过每次迭代仅对图像的一个子部分(即每个椭圆的边界框)进行 alpha 合成来加速这个固有的缓慢过程。
-
您还可以预先计算所有 1000 个中间椭圆图像,然后在循环中对它们进行 alpha 合成(尽管我怀疑后者是主要瓶颈)。
标签: python opencv python-imaging-library