0

如何在opencv中相应地对blob进行排序?我所有的斑点都散落在图像上。我希望它在右下角成为第一个 blob。从第一个 blob 到最后一个 blob 的左上角,第二个 blob 位于左下角。我需要一些关于如何处理它的建议。谢谢你。

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 吗?对于每个检测到的 blob,您可以通过以下方式获取其区域

CvRect rect = blob->GetBoundingBox();

然后你可以根据 rect.x 对所有的 blob 进行排序。

于 2012-05-07T07:49:54.890 回答