繁体   English   中英

使用PIL进行非仿射变换

[英]Non-affine transformation with PIL

我有一个矩形图像( O ),我想将其包裹成一个圆形( I )。 基本上,我想取两个笛卡尔坐标轴xy并将它们映射到极坐标φr ,这样I(φ,r) = O(f(φ),g(r))fg线性函数。

我在PIL中找到了Image.transform方法,但是在阅读文档时,它仅适用于仿射变换矩阵。

1.可以通过仿射变换来完成“将矩形包裹成圆形”吗? 我怕没有

2.我还能如何做到这一点?

根据martineau的说法,PIL中没有此类功能,因此我必须自己实现:

作为overlay笛卡尔形象和circle极地图像。

for x in range (800):
    for y in range (800):
        r = ( (x - 400) ** 2 + (y - 400) ** 2) ** .5
        phi = math.atan2 (float (y - 400), float (x - 400) )
        tx = int (phi * 1200.0 / 2.0 / math.pi + 300) % 1200
        ty = int ( (r - 100.0) * 350.0 / 250.0)
        if 100 < r < 350: circle.putpixel ( (x, y), overlay.getpixel ( (tx, ty) ) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM