OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配项
轮廓属性

前一个教程: 轮廓特征
下一个教程: 轮廓:更多功能

目标

  • 了解如何提取一些对象常用的属性,如填充度、等效直径、蒙版图像、平均强度等。

1. 宽高比

它是对象边界矩形的宽度与高度的比值。

\[宽高比 = \frac{宽度}{高度}\]

let rect = cv.boundingRect(cnt);
let aspectRatio = rect.width / rect.height;

2. 范围

范围是轮廓面积与边界矩形面积的比值。

\[范围 = \frac{对象面积}{边界矩形面积}\]

let area = cv.contourArea(cnt, false);
let rect = cv.boundingRect(cnt));
let rectArea = rect.width * rect.height;
let extent = area / rectArea;

3. 填充度

填充度是轮廓面积与其凸包面积的比值。

\[填充度 = \frac{轮廓面积}{凸包面积}\]

let area = cv.contourArea(cnt, false);
cv.convexHull(cnt, hull, false, true);
let hullArea = cv.contourArea(hull, false);
let solidity = area / hullArea;

4. 等效直径

等效直径是面积与轮廓面积相同的圆的直径。

\[等效直径 = \sqrt{\frac{4 \times 轮廓面积}{\pi}}\]

let area = cv.contourArea(cnt, false);
let equiDiameter = Math.sqrt(4 * area / Math.PI);

5. 方向

方向是对象所指的角度。以下方法还提供了主轴和副轴的长度。

let rotatedRect = cv.fitEllipse(cnt);
let angle = rotatedRect.angle;

6. 蒙版和像素点

在某些情况下,我们可能需要构成该对象的所有点。

我们使用函数:cv.transpose (src, dst)

参数
src输入数组。
dst与 src 类型相同的输出数组。

7. 最大值、最小值及它们的位置

我们使用函数:cv.minMaxLoc(src, mask)

参数
src输入单通道数组。
mask用于选择子数组的可选掩码。
let result = cv.minMaxLoc(src, mask);
let minVal = result.minVal;
let maxVal = result.maxVal;
let minLoc = result.minLoc;
let maxLoc = result.maxLoc;

8. 平均颜色或平均强度

在此,我们可以找到物体上的平均颜色。或者它可以在灰度模式下成为物体的平均强度。我们再次使用同一掩码来完成它。

我们使用以下函数:cv.mean (src, mask)

参数
src输入数组,应该有 1 到 4 个通道,以便可以在 Scalar 中存储结果。
mask可选操作掩码。
let average = cv.mean(src, mask);