2012-07-24 10 views
9

OpenCVを使用して、グレースケール画像内のBLOB /オブジェクトの領域を計算する必要があります(IplImageではなくMatとして読み込みます)。 私は、エッジの座標(フォームのオブジェクトをオブジェクトに変更するエッジの数)を取得するか、輪郭のすべての座標を取得し、contourArea()を使用してオブジェクトの面積を計算することをお勧めします。OpenCVでオブジェクトの面積を計算する

findContours()(プログラミング:C++)を使用してノイズをすべて削除し、満足のいくコンターを得ました。

findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy,int mode, int method, Point offset=Point()); 

は、今私はのparam contoursはすでに私のオブジェクトのすべての輪郭の座標を所有していることを理解するようになりました。私はそれを得ましたか?

「はい」の場合、アクセスする方法はありますか?

もしそうでなければ、とにかく輪郭の座標をどうやって得るのですか?

答えて

23

contoursは実際に

vector<vector<Point> > contours; 

として定義そして今、私はそれがそのポイントにアクセスする方法は明らかだと思います。

輪郭領域がうまくcontourArea()という関数によって計算されます。

for (unsigned int i = 0; i < contours.size(); i++) 
{ 
    std::cout << "# of contour points: " << contours[i].size() << std::endl; 

    for (unsigned int j=0; j<contours[i].size(); j++) 
    { 
     std::cout << "Point(x,y)=" << contours[i][j] << std::endl; 
    } 

    std::cout << " Area: " << contourArea(contours[i]) << std::endl; 
} 
+1

どうもありがとう!あなたがやっていたことを理解するのに少し時間がかかりましたが、私が今言うことができる限りでは、何か解決策を見ていない日にこの問題に座っています... – Temer

+0

文書を読むことは、時間:)。 OpenCVに付属するサンプルコードコードも素晴らしいです。 – Sam

関連する問題