0

opencvでそれに応じてblobを並べ替えるにはどうすればよいですか?画像上にすべてのブロブが散らばっています。最初のブロブになるために右下にしたいと思います。最初のブロブから左上の最後のブロブまで左下にある2番目のブロブ。私はそれに対処する方法についていくつかの提案が必要です。ありがとうございました。

4

2 に答える 2

2

私はこのようなものを試してみます..

bool sortBlobs(CBlob first, CBlob second) {

return first.x > second.x;
}


int main() {


  std::vector<CBlob> blobvector;

  CBlobResult blobs;

  // ...
  // find blobs here ...
  // ...

  for (int i = 0; i < blobs.GetNumBlobs(); i++ )
  {
    blobvector.push_back(blobs.GetBlob(i));
  }

  // now sort the vector
  std::sort(blobvector.begin(), blobvector.end(), sortBlobs);

  // ...
}
于 2012-05-07T08:55:14.313 に答える
0

OpenCVでcvBlobsLibを使用していますか?検出されたブロブごとに、次の方法でその領域を取得できます。

CvRect rect = blob->GetBoundingBox();

そして、rect.xに従ってすべてのblobを並べ替えることができます。

于 2012-05-07T07:49:54.890 に答える