web-dev-qa-db-ja.com

OpenCVバイナリイメージ内の接続されたコンポーネントのリストを見つける方法

C++アプリケーションにOpenCVを使用しています。一部のオブジェクトを含む8ビットのバイナリイメージがあります。オブジェクトの色はすべて255ですが、背景のすべての色は0です。各オブジェクトの内部には、空の(黒い)ピクセルはありません。つまり、各オブジェクトは完全に白です。オブジェクトは互いに接続されていません。これから私が抽出したいものは次のとおりです:

ある種のオブジェクトのリストを抽出したいのですが、そこから、そのリスト内の各オブジェクトの場所の概念を把握しています。これはcvConnectedComponents()または他の何かを使用している可能性があります。各オブジェクトが画像内のどこにあるかを示す必要があります。これは、いくつかの計算または画像内のオブジェクトの位置の測定値を提供する何かに基づいて、各オブジェクトまたは中央値または中心の境界長方形の形式である可能性があります。調べるべきOpenCV関数へのポインタはありますか?

14
Cricketer

Cv :: findCountoursによって返された等高線をcv :: floodFillする必要があります。 findContoursについては this example を、floodFillについては this one を参照してください。

11

バージョン3.0以降、OpenCVには connectedComponents 関数があります。

30