3

私はOpenCVとc++を使用しています。二値化後の白黒画像があります。このオブジェクトに属する点(x、y)の座標が1つしかない場合、オブジェクトの面積を計算するにはどうすればよいですか?

4

3 に答える 3

2

バイナリ イメージなので、簡単にblobを取得できます。ブロブを取得したら、ブロブの面積を簡単に計算できます。cvBlobsLibを使用してブロブを取得できます。OpenCV は cvBlobsLib を統合していません。あなたは自分でそれを行うことができます。しかし、OpenCV には輪郭の機能があります。findContours を使用してブロブ/輪郭を取得し、次に領域を取得できます。OpenCV-輪郭を見つける

OpenCV - 構造解析と形状記述

モーメント、huMoments、等高線などに関する情報が見つかります。モーメントを使用すると、独自のブロブを作成でき、ブロブの面積を取得するのにも役立ちます。

これは、OpenCV の Python バインディングを使用するマシン ビジョン用のオープン ソース フレームワークです - SimpleCV

彼らは、輪郭とモーメントを使用して完全なブロブ機能を実装しました。ご覧いただけます。

ブロブ

ブロブメーカー

Python で書かれていますが、C++ に移植して blob を使用できます。

于 2012-09-07T14:15:22.727 に答える
1

アルゴリズムは非常に簡単で、次のようになります。

  1. 画像上のすべての輪郭を見つけます
  2. すべての輪郭を循環し、ポイントが輪郭の内側にあるかどうかを確認します。
  3. 等高線が見つかった場合は、その面積を計算します
于 2012-09-08T08:44:28.160 に答える
0

開始点から始めて、同じ色の隣接するピクセルを段階的に追加する、ある種の領域拡張アルゴリズムを作成する必要があります。

これを行う怠惰な (そしてはるかに遅い) 方法は、cv::floodFill 関数を使用して、シェイプ内のピクセルを特定の色に設定し、画像内のこの特定の色を持つピクセルをカウントすることです。

于 2012-09-07T15:45:13.710 に答える