问题
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
来源:https://stackoverflow.com/questions/8259655/best-way-to-count-number-of-white-blobs-in-a-thresholded-iplimage-in-opencv-2