如何找到检测到的圆的顺序?

时间:2012-11-07 14:56:28

标签: opencv

我的图像中有几个圆圈,每个不同大小的圆圈。我必须找到每个圆的半径进行计算,所以我使用霍夫圆圈,我能够找到检测到的圆的半径。因为我有很多不同大小的圆圈如何找到哪个半径属于哪个圆圈? 例如我有3个圆圈c1,c2,c3和霍夫检测返回我3半径r1,r2,r3现在我怎样才能得到哪一个属于哪个圆圈。

2 个答案:

答案 0 :(得分:1)

OpenCV中的Hough Circle

EG:

vector<Vec3f> circles;

HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8, 200, 100, 0, 0 );

圆形对象的中心点存储在其中。

x = circles[i][0];
y =circles[i][1];
radius = circles[i][2];

EG:这将绘制圆圈

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

答案 1 :(得分:1)

您可以使用函数cvHoughCircles()获取检测到的圆的参数。