我有一点问题,我想要一些帮助。我有一个有两个圆圈的图像,我想得到中心的坐标。对于一个圈我解决了问题。我不知道热得到第二个圆圈。有什么想法吗?
这是我的代码:
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 );
}
这是二进制图像 这是带轮廓的图像。
答案 0 :(得分:1)
您可以使用Hough Circles查找圈子。
答案 1 :(得分:0)
如果hough Circles找不到圈子
答案 2 :(得分:0)
我用霍夫圆检测解决了这个问题。感谢。