Python圖像處理庫PIL的ImagePath模塊介紹

Kendra7741 8年前發布 | 12K 次閱讀 Python開發

來自: http://blog.csdn.net/icamera0/article/details/50807121


ImagePath模塊被用于存儲和操作二維向量數據。Path對象會被傳遞到ImageDraw模塊中。

一、ImagePath模塊的函數

1、  Path

定義:ImagePath.Path(coordinates) ? Path instance

含義:創建一個path對象。坐標列表可以是任何形式的序列對象,其包括二元組[(x,y),…]或者數值[x,y,…]

用戶也可以從另一個path對象中創建一個新的path對象。

1.1.6及其以后的版本中,用戶也可以進入任何實現了python buffer API的對象。這個buffer應該提供讀操作,并且containC floats in machine byte order

Path對象實現了大多數python的序列接口,像一個(x,y)對的序列。用戶可以使用len()函數,訪問其內部項,切分。但是,當前的版本不支持切分對齊,或者內部項和切分塊刪除。

二、ImagePath模塊的方法

1、  Compact

定義:p.compact(distance=2) ? count

含義:通過去除彼此接近的點壓縮這path。這個方法會修改path本身,返回刪除掉的點的個數。

變量distance按照城市距離來計算,默認為兩個像素點。

例子:

>>> from PIL importImagePath

>>> path =ImagePath.Path((0,0,1,1,2,2,3,3,4,4,4,4,5,5,5,5,6,6))

>>> len(path)

9

>>> path.compact(2)

2

>>> len(path)

7

通過該函數,將path對象中的(4,4,4,4,5,5,5,5)進行了壓縮,所以path對象的長度減小了2

2、  Getbbox

定義:p.getbbox() ? 4-tuple

含義:獲取path對象的邊界框。

例子:

>>> from PIL importImagePath

>>> path= ImagePath.Path((0,0,1,1,2,2,3,3,4,4,4,4,5,5,5,5,6,6))

>>> len(path)

9

>>> path.getbbox()

(0.0, 0.0, 6.0, 6.0)

對于坐標組(0,0,1,1,2,2,3,3,4,4,4,4,5,5,5,5,6,6),它的左上角為(0,0),右下角為(66),所以該方法返回的四元組為(0.0,0.0, 6.0, 6.0)

3、  Map

定義:p.map(function)

含義:通過變量function指定的函數映射path對象。

例子:

該例子還需要再研究一下。

4、  Tolist

定義:p.tolist() ? list

含義:將path對象轉換為python list[(x,y),…]

例子:

>>> from PIL importImagePath

>>> path =ImagePath.Path((0,0,1,1,2,2,3,3,4,4,4,4,5,5,5,5,6,6))

>>> path.tolist()

[(0.0, 0.0), (1.0, 1.0), (2.0,2.0), (3.0, 3.0), (4.0, 4.0), (4.0, 4.0), (5.0, 5.0), (5.0, 5.0), (6.0, 6.0)]

5、  Transform

定義:p.transform(matrix)

含義:使用仿射變換對path對象進行轉換。變量matrix為六元組,且按照下面的方式進行操作:

xOut = xIn * a + yIn * b + c

    yOut = xIn * d + yIn * e + f

例子:

>>> from PIL importImagePath

>>> path =ImagePath.Path((0,0,1,1,2,2,3,3,4,4,4,4,5,5,5,5,6,6))

>>> path.tolist()

[(0.0, 0.0), (1.0, 1.0), (2.0,2.0), (3.0, 3.0), (4.0, 4.0), (4.0, 4.0), (5.0, 5.0), (5.0, 5.0), (6.0, 6.0)]

>>>path.transform((2,3,1,3,2,2))

>>> path.tolist()

[(1.0, 2.0), (6.0, 7.0), (11.0,12.0), (16.0, 17.0), (21.0, 22.0), (21.0, 22.0), (26.0, 27.0), (26.0, 27.0),(31.0, 32.0)]

 

 本文由用戶 Kendra7741 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!