我正在使用此代码获取图像中检测到的圆心的坐标。
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函数后:
答案 0 :(得分:2)
如果我理解你的代码你的代码绘制了圆圈但是
cout << "center" << center << endl;
行没有给出正确的输出。
这是因为cv::Point
不支持通过<<
直接输出。
尝试使用:
cout << "center" << center.x << ", " << center.y << endl;
如果问题是您找不到任何圈子,请确保正确选择min_radius
和max_radius
。尝试从各种允许的半径开始,然后尝试选择较小的范围,直到您只获得所需的圆圈。
此值可以在检测率方面产生巨大差异。