Best way to count number of “White Blobs” in a Thr

2019-07-28 01:32发布

问题:

I need to count the number of white blobs in a Thresholded image. I'm counting small squares on a marker. But due to the poor image quality of the webcam, these squares don't appear as squares. This is why I decided to use Blob detection. This is for an Augmented reality application. Is my decision right?

Camera placed near the marker

Camera placed far from the marker

回答1:

What about the cvFindContours function? It's been a while since I use it but I think you can then iterate in the CvSeq of found contours and work with them the way you like.

I know it's an old thread but maybe it can help you!



回答2:

How about using the cvBlobsLib. This detects connected regions which you should easily be able to count, and obtain further information such as their size.



回答3:

I have used findContours function. Here is the piece of code:

    std::vector<std::vector<cv::Point> > contours;      

    cv::findContours(m, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
    for( unsigned int i = 0; i < contours.size(); i++ )
    { 
        if( contours[i].size() < 3  ) // at least a triangular area?
            continue;

        double area = cv::contourArea(Mat(contours[i]) );
        if ( (area > min * min) && ( area < max * max ) )
        {
           //... use or count blob