OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
輪郭の特性

前のチュートリアル: 輪郭の特徴
次のチュートリアル: 輪郭 : その他の関数

目標

  • ここでは、Solidity、等価直径(Equivalent Diameter)、マスク画像、平均輝度(Mean Intensity)など、オブジェクトのよく使われるプロパティの抽出方法を学ぶ。

1. アスペクト比

物体のバウンディング矩形の幅と高さの比である。

\[Aspect \; Ratio = \frac{Width}{Height}\]

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

2. 範囲 (Extent)

Extent は輪郭の面積とバウンディング矩形の面積の比である。

\[Extent = \frac{Object \; Area}{Bounding \; Rectangle \; Area}\]

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

3. 充実度 (Solidity)

Solidity は輪郭の面積とその凸包の面積の比である。

\[Solidity = \frac{Contour \; Area}{Convex \; Hull \; Area}\]

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

4. 等価直径

Equivalent Diameter は、輪郭の面積と同じ面積を持つ円の直径である。

\[Equivalent \; Diameter = \sqrt{\frac{4 \times Contour \; Area}{\pi}}\]

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

5. 向き

Orientation は物体が向いている角度である。次のメソッドは主軸 (Major Axis) と副軸 (Minor Axis) の長さも返す。

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

6. マスクとピクセル点

場合によっては、そのオブジェクトを構成するすべての点が必要になることがある。

次の関数を使用する: cv.transpose (src, dst)

引数
src入力配列。
dstsrcと同じ型の出力配列。

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結果を Scalar に格納できるよう、1~4 チャンネルを持つべき入力配列。
mask省略可能な演算マスク。
let average = cv.mean(src, mask);