1

I want to detect the largest BLOB in a binary image for my project. can you please guide me on how can I do this?

Thanks

1

3 Answers 3

5

Use findContours to find all blobs in image and using contourArea you can calculate blob's area. So just find contour (blob) with biggest area.

Sign up to request clarification or add additional context in comments.

1 Comment

hi Astor, Thanks Alot for your advice. It really helped a lot. I used the find contours method and found out the largest contour for the image of a person in a uniform background. But instead of the person being the largest contour it considers the background as the largest contour. and for some images it leaves out some empty blobs. Can you please help me figure out why this is happening and how can i fill in those holes which are inside the persons body. Sorry for bad xplanation. I hope you understand my problem.
2

A good point of start would be the CVBloblib . I used it in the past and it works fine.

Then it is just a question of calculating the blobs area or perimeter, depending on what you want :)

Comments

0

I don't know what is the best practice here, but I'd do it somehow like this:

  • First find all blobs. You could use cvBlobslib or cvBlob or findContours etc.
  • Then store all blobs in vector. Sort your vector by blobs' area. And then get the last blob.

    bool sortBlobsASC(CBlob first, CBlob second) { return first.Area() < second.Area(); }

    std::sort(myvec.begin(), myvec.end(), sortBlobsASC);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.