我们有时候提取轮廓的时候是用的霍夫圆检测,但是这种方式查找出来的圆很多,你如果想特定的要某个圆,你需要动手去用面积筛选,这样就限制了代码的鲁棒性,除了用霍夫检测外我们也可以用轮廓外接圆来查找圆;当然这两个方法的前提是你已经对图像做了预处理。下面直接贴上代码了;
vector<vector<Point>>contours;
vector<Vec4i>hierarchy(contours.size());
findContours(src_open,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE,Point());
Point2f center;
float radius;
for (int i=0;i<contours.size();i++)
{
minEnclosingCircle(Mat(contours[i]),center,radius);
drawContours(src,contours,i,Scalar(0,233,4));
circle(src,center,radius,Scalar(0,0,255),1,8,0);
}