2016-10-07 142 views
1

使用Python PIL我想要以這樣一種方式轉換輸入圖像,使它們看起來很透徹。我發現的大部分答案都是關於旋轉等。下面的圖片顯示了我瞄準的效果之一。同樣,我想這樣做不僅從前到後,而且從左到右,反之亦然。我想要的另一個效果是以中心更近,邊緣更遠的方式扭曲圖像。Python PIL圖像變形/仿射變換

我該如何撥打im.transform才能獲得此效果?爲什麼?

輸入圖像:

Input Image

輸出效果:

Ouput Image

回答

3

我相信你正在尋找perspective transformations。您可以在下面的方式與枕頭做到這一點:

transformed = image.transform(
    image.size, Image.PERSPECTIVE, 
    [ 
     a0, a1, a2, 
     a3, a4, a5, 
     a6, a7 
    ], 
    Image.BILINEAR 
) 

其中A0〜A7以這種方式用於變換系數(從源代碼,Geometry.c):

xout = (a0 * xin + a1 * yin + a2)/(a6 * xin + a7 * yin + 1); 
yout = (a3 * xin + a4 * yin + a5)/(a6 * xin + a7 * yin + 1); 
+0

有趣。但是,上面的效果需要什麼值? – Simon

+0

或更好,如何將3D投影轉換爲此2D輸入 – Simon