Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv:如何获取两个圆心的坐标?_Opencv_Image Processing - Fatal编程技术网

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

Opencv:如何获取两个圆心的坐标?,opencv,image-processing,Opencv,Image Processing,我有点小问题,需要帮助。我有一个有两个圆的图像,我想得到中心的坐标。有一圈我就解决了这个问题。我不知道第二圈有多热。有什么想法吗 这是我的密码: Mat canny_output; vector<vector<Point>> contours; vector<Vec4i> hierarchy; Canny(BGRFilter,canny_output,100,200,3); findContours(cann

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

这是我的密码:

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 );
      }
Mat canny\u输出;
矢量等值线;
向量层次;
Canny(BGRFilter,Canny_输出,100200,3);
findContours(canny_输出、轮廓、层次、CV_RETR_树、CV_链近似_简单、点(0,0));
向量μ(等高线.size());

对于(int i=0;i可以用于查找圆。

如果hough圆未找到圆


试试看

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