OpenCVにはラベリングプログラムが実装されていないので、cvBlobsLibというラベリングを扱うプログラムをインストールしてみた。
以下、手順:
- cvBlobsLibのページにアクセスする。
- ここでLatest releaseをダウンロードする。僕はver8.3(Windows版)を使用。
- ダウンロードしてzipを解凍したら、"cvblobslib.sln"をダブルクリックで起動。
- 起動したら「プロジェクト」→「cvblobslibのプロパティ」を選択。
- 構成を"Release"にして、左側のツリーの「構成プロパティ」→「C/C++」→「全般」を選択し、右側の「追加のインクルードディレクトリ」を自分のPCのOpenCV環境に合わせて変更する。
- BlobLibraryConfiguration.hの一番下の行にある"#define _SHOW_ERRORS"をコメントアウトして、ビルド。
- Releaseディレクトリ下にcvblobslib.libというファイルができるので、それを適当な場所へコピーして自分のプログラムからパスを通す。
- "BlobResult.h"、"BlobContour.h"、"BlobLibraryConfiguration.h"、"BlobOperators.h"、"ComponentLabeling.h"というファイルを適当な場所へコピーして自分のプログラムからパスを通す。
で、やりたいことは各ラベルの重心を求めることなんだが、今まで調べた範囲ではどうやって良いかわからん。YahooグループのMLにもそういう質問が出ているんだが、どうも明確な答えが出てない。っていうかできないのかも。