在image / opencv / c ++中获取检测到的圆的中心

时间:2013-11-18 08:30:00

标签: c++ opencv

我正在使用此代码获取图像中检测到的圆心的坐标。

vector<Vec3f> circles;

    cv::HoughCircles( t, circles, CV_HOUGH_GRADIENT, 1, t.rows/8, 200,         100, 0, 0 );

       for( size_t i = 0; i < circles.size(); i++ ){
            Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
            cout << "center" << center << endl;
        int radius = cvRound(circles[i][2]);
            // circle center
            circle( t2, center, 3,  1 , -1, 8, 0 );        
             // circle outline
            circle( t2, center, radius,  1  , 3, 8, 0 );  
        }

        imshow( "circles", t2 );

我可以检测到圆圈,但没有得到任何关于中心点的铜线的结果:(

提前感谢。

版本之后:

我添加了这一行,但答案是零。

cout << "number of circles found: " << circles.size() << endl;

图片: 第一个是主圆,第二个是应用高斯滤波器和HoughCircles函数后:

enter image description here

1 个答案:

答案 0 :(得分:2)

如果我理解你的代码你的代码绘制了圆圈但是

 cout << "center" << center << endl;

行没有给出正确的输出。

这是因为cv::Point不支持通过<<直接输出。

尝试使用:

 cout << "center" << center.x << ", " << center.y << endl;

如果问题是您找不到任何圈子,请确保正确选择min_radiusmax_radius。尝试从各种允许的半径开始,然后尝试选择较小的范围,直到您只获得所需的圆圈。

此值可以在检测率方面产生巨大差异。

相关问题