class 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 轴(列)投影直方图的整数计数列表。仅当调用 find_blobs(...) 时 x_hist_bins_max > 0 才会填充;否则为空。索引 [12]。

y_hist_bins#

色块 Y 轴(行)投影直方图的整数计数列表。仅当调用 find_blobs(...) 时 y_hist_bins_max > 0 才会填充;否则为空。索引 [13]。