class Blob -- Blob 物件#

blob 物件是由 Image.find_blobs() 回傳的 attrtuple。每個色塊代表一塊相連的像素區域,這些像素符合傳遞給 find_blobs() 的一個或多個色彩閾值。此物件將色塊的邊界框、形心、像素數量、周長、方向、面積密度度量、命中它的閾值集合、旋轉的最小面積矩形,以及選用的 X/Y 投影直方圖一併封裝。

欄位可透過屬性名稱(blob.x)或索引(blob[0])存取。此物件沒有公開的建構子。

class image.blob#

請呼叫 Image.find_blobs() 來建立此物件。

邊界框與形心#

x#

邊界框左上角的 x 座標,以像素為單位。整數。索引 [0]。

y#

邊界框左上角的 y 座標,以像素為單位。整數。索引 [1]。

w#

邊界框寬度,以像素為單位。整數。索引 [2]。

h#

邊界框高度,以像素為單位。整數。索引 [3]。

cx#

形心 x 座標(色塊的像素平均值),四捨五入為整數。整數。索引 [4]。

cy#

形心 y 座標(色塊的像素平均值),四捨五入為整數。整數。索引 [5]。

cxf#

以次像素浮點數表示的形心 x 座標。索引 [16]。

cyf#

以次像素浮點數表示的形心 y 座標。索引 [17]。

rect#

邊界框的 (x, y, w, h) 4 元組。適合直接傳遞給繪製/裁切方法,例如 Image.draw_rectangle() 或 Image.crop()。索引 [22]。

形狀描述子#

pixels#

組成此色塊的像素數量。整數。索引 [6]。

area#

軸對齊邊界框的面積(w * h)。整數。索引 [19]。

density#

pixels / area——色塊填滿邊界框的比例。範圍為 0.0 至 1.0 的浮點數。實心矩形趨近於 1.0;細長的對角線則趨近於 0.0。索引 [20]。

perimeter#

色塊外周長上的像素數量。整數。索引 [10]。

roundness#

由色塊的二階矩計算出的短軸與長軸比值。範圍為 0.0 至 1.0 的浮點數;1.0 為完美的圓形,0.0 為一條線。索引 [11]。

elongation#

1.0 - roundness——範圍為 0.0 至 1.0 的數值,其中 0.0 為完美的圓形,1.0 為一條線。索引 [18]。

compactness#

(pixels * 4 * pi) / (perimeter * perimeter)。在給定面積下圓形具有最小周長,因此此度量對完美圓形為 1.0,並隨色塊變得更不規則或更細長而下降。浮點數。索引 [21]。

rotation#

由色塊的二階矩推導出的色塊方向,以弧度為單位。範圍為 0 至 pi 的浮點數(由於軸是對稱的,因此超過 pi 後方向會有歧義)。對細長的色塊最為準確——對接近圓形的色塊,數值會變得不穩定。索引 [7]。

閾值/合併中繼資料#

code#

32 位元點陣圖,對於此色塊所符合的每個色彩閾值(如同傳遞給 Image.find_blobs())各設定一個位元。使用單一閾值時,code == 1。對於合併的多色色塊(merge=True),可能會設定超過一個位元。索引 [8]。

count#

合併進此色塊的來源色塊數量。merge=False 時為 1;merge=True 時可能更大。索引 [9]。

角點#

corners#

由四個 (x, y) 整數元組組成的 4 元組,代表色塊的四個極端角,從左上角開始順時針排序。這些是由輪廓導出的角點(色塊邊界上沿四條對角線離形心最遠的點)。索引 [14]。

min_corners#

由四個 (x, y) 整數元組組成的 4 元組,代表色塊最小面積旋轉邊界矩形的四個角。搭配 rotation 一起使用,可得到對色塊最緊密的擬合。索引 [15]。

投影直方圖#

x_hist_bins#

色塊 X 軸(欄)投影直方圖的整數計數清單。僅在以 x_hist_bins_max > 0 呼叫 find_blobs(...) 時才會填入;否則為空。索引 [12]。

y_hist_bins#

色塊 Y 軸(列)投影直方圖的整數計數清單。僅在以 y_hist_bins_max > 0 呼叫 find_blobs(...) 時才會填入;否則為空。索引 [13]。