簡體   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