Opencv:如何获得两个圆心的坐标?

时间:2014-12-01 10:59:13

标签: opencv image-processing

我有一点问题,我想要一些帮助。我有一个有两个圆圈的图像,我想得到中心的坐标。对于一个圈我解决了问题。我不知道热得到第二个圆圈。有什么想法吗?

这是我的代码:

Mat canny_output;
      vector<vector<Point>> contours;
      vector<Vec4i> hierarchy;

      Canny(BGRFilter,canny_output,100,200,3);

      findContours(canny_output,contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,Point(0,0));

      vector<Moments> mu(contours.size());

      for (int i=0;i<contours.size();i++)
      {
          mu[i]=moments(contours[i],false);
      }

      vector<Point2f> mc(contours.size());

      for (int i=0;i<contours.size();i++)
      {
          mc[i]=Point2f(mu[i].m10/mu[i].m00,mu[i].m01/mu[i].m00);
      }



      Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 );

      for( int i = 0; i< contours.size(); i++ )
      {
          Scalar color = Scalar( 121, 100, 90 );
          drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );
          circle( drawing, mc[i], 4, color, -1, 8, 0 );
      }

这是二进制图像 Here os the binary image 这是带轮廓的图像。 enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用Hough Circles查找圈子。

答案 1 :(得分:0)

如果hough Circles找不到圈子

尝试minAreaRectminEnclosingCircle

答案 2 :(得分:0)

我用霍夫圆检测解决了这个问题。感谢。