在opencv的opencv2.4.10版本中,可以使用simpleBlogDetector模块
网上有很多分析的文章。我在尝试使用时,刚开始总是得不到目标blob,返回的blob个数是0,有时是崩溃越界。仔细查找后,发现是参数设置的一些问题。
附一些代码及说明
cvtColor(m_srcBGRImg, m_HSVimg, COLOR_BGR2HSV);
m_Hueimg.create(m_HSVimg.size(), m_HSVimg.depth());
int chH[] = {0, 0};
mixChannels(&m_HSVimg, 1, &m_Hueimg, 1, chH, 1);
imshow(“hue”,m_Hueimg);
Mat testSrcImg =m_Hueimg.clone();
imshow("origin blob2",testSrcImg);
vector<KeyPoint> keyPoints; //每一个blob返回一个keypoints是blob中心点
SimpleBlobDetector::Params params;
params.minThreshold=50;//起始值,查t0到(t0+step)的点
//t0+step 到t0+2*step的点
params.maxThreshold=255;
params.thresholdStep =50;
//params.filterByArea =false;//按照面积晒选如果为false容易出现溢出 bug
params.filterByColor =true;
params.blobColor = 255;//提亮色
params.minArea =500;//目标blob的最小点数
params.maxArea =500000;//最大点数
params.filterByInert